1.场景
将data数据库的数据以及表结构复制到newdata数据库,比如新建一个测试数据库。
2.步骤
2.1创建新的数据库newdata
#mysql -u root -p123456 mysql>CREATE DATABASE 'newdata' DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI; mysql>exit;
注意,是撇号不是引号,键盘esc下方。
2.2mysqldump及mysql的命令组合复制
#mysqldump data -u root -p123456 --add-drop-table | mysql newdata -u root -p123456
注意,在终端输入命令,-p中的密码是没有空格的。复制时间百万条数据,约复制61秒。
2.3其他
同一台MySQL服务器上复制数据库的方法。若要复制到远程MySQL服务器上,可以使用mysql的“ -h 主机名/ip”参数。前提是mysql允许远程连接,且远程复制的传输效率和时间可以接受。
#mysqldump data -u root -p123456 --add-drop-table | mysql -h 192.168.1.22 newdata -u root -p123456
3mysqldump参数说明
--all-databases, -A
导出全部数据库。
mysqldump -uroot -p --all-databases
--all-tablespaces, -Y
导出全部表空间。
mysqldump -uroot -p --all-databases --all-tablespaces
--no-tablespaces, -y
不导出任何表空间信息。
mysqldump -uroot -p --all-databases --no-tablespaces
--add-drop-database
每个数据库创建之前添加drop数据库语句。
mysqldump -uroot -p --all-databases --add-drop-database
--add-drop-table
每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)
mysqldump -uroot -p --all-databases(默认添加drop语句)
mysqldump -uroot -p --all-databases –skip-add-drop-table(取消drop语句)
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用--skip-add-locks取消选项)
mysqldump -uroot -p --all-databases(默认添加LOCK语句)
mysqldump -uroot -p --all-databases –skip-add-locks(取消LOCK语句)