我想写一个脚本,复制我的当前数据库sitedb1到sitedb2在相同的mysql数据库实例。我知道我可以转储sitedb1到一个sql脚本:

mysqldump -u root -p sitedb1 >~/db_name.sql

然后将它导入sitedb2。 有没有更简单的方法,不用将第一个数据库转储到sql文件?


当前回答

你可以:

CREATE DATABASE copy_of_db;
create table copy_of_db.table LIKE source_db.table;

If you want to copy data too:
INSERT INTO copy_of_db.table SELECT * FROM source_db.table;

重复所有表、函数、过程等

(mysqldump是正确的方法,但这是一个快速和肮脏的解决方案,在许多情况下有用)

其他回答

使用MySQL Workbench,您可以使用数据库>迁移向导将数据库复制到相同或其他服务器实例。我相信它可以在服务器端工作,因此它应该是复制大型数据库的一个很好的解决方案。

你可以这样做:

mysqldump -u[username] -p[password] database_name_for_clone 
 | mysql -u[username] -p[password] new_database_name
mysqladmin create DB_name -u DB_user --password=DB_pass && \
        mysqldump -u DB_user --password=DB_pass DB_name | \
        mysql     -u DB_user --password=DB_pass -h DB_host DB_name

使用Mydumper

sudo apt install mydumper

生成转储

mydumper --user=YOUR_USER --password=YOUR_PASSWORD -B YOUR_CURRENT_DB \ 
         --triggers --routines --events --outputdir YOUR_OUTPUT_DIR

负载转储

myloader --user=YOUR_USER --password=YOUR_PASSWORD --database=YOUR_NEW_DB \ 
         --directory=YOUR_OUTPUT_DIR

最好和简单的方法是在终端中输入这些命令,并设置root用户的权限。对我来说很有用!

:~$> mysqldump -u root -p db1 > dump.sql
:~$> mysqladmin -u root -p create db2
:~$> mysql -u root -p db2 < dump.sql