业务有要求,希望将现有的mysql数据库bdi_gj,复制一个新的数据库为bdi_gj_40。
我的操作为:
(1)首先创建一个新库bdi_gj_40
create database bdi_gj_40;
(2)然后使用mysqldump进行导出导入,实现复制效果
mysqldump bdi_gj -ubde_cubigdata -pxxx -h192.168.20.26 -P3306 --add-drop-table |mysql bdi_gj_copy -ubde_cubigdata -pxxx -h192.168.20.26 -P3306
还有一种情况,如果之前导入数据时有两份相同数据而不同库名,可以使用重命名库名的方式实现上面的要求:
(1)首先新建复制的库
(2)然后将以前库的表全部重新rename命名为新库下的表
具体脚本如下:
#!/bin/bash
mysql -uroot -pxxx -e 'create database bdi_gj_4.0'
list_table=$(mysql -uroot -pxxx -Nse "select table_name from information_schema.TABLES where table_schema='proc';")
for table in $list_table
do
mysql -uroot -pxxx -e "rename table proc.$table to bdi_gj_4.0.$table"
done
针对重命名数据库,总结如下:
1.针对MYISAM引擎
(1)MYISAM引擎把库名字对应的文件夹名改了
(2)关闭mysqld
(3)把data目录中的db_name目录重命名为new_db_name
(4)打开mysqld
2.针对INNODB引擎
(1)按新名字建立一个数据库
(2)删除原有库中所有表上的触发器
(3)使用rename table命令将表从原数据库复制到新数据库
(4)在新数据库上重新创建2.2中被删除的触发器
(5)在新数据库上重新创建存储过程、自定义函数、Events等
具体RENAME TABLE命令语法为:
RENAME TABLE db_name.table1 TO new_db_name.table1,
db_name.table2 TO new_db_name.table2;
参考网址:
https://blog.csdn.net/dearbaba_8520/article/details/80711465