mysql复制数据库与重命名数据库

业务有要求,希望将现有的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

http://www.cnblogs.com/gomysql/p/3584881.html

你可能感兴趣的:(MySQL)