mysql同一实例上将一个库“克隆”到另一个库

一.需求背景
  将同一mysql实例上的md_ls库复制一份新库,新库名为md_ls_s2。
  mariadb 10.1.16


二.导出操作
对md_ls库进行导出操作
cd /apps/sh/tool
./mydumper --user=root --password='密码' --long-query-guard=120 --socket /tmp/mysql3306.sock --database=md_ls
--outputdir=/apps/mysql_backup//mydumper/temp -t 8 --verbose=3 --logfile=/apps/mysql_backup//mydumper/temp/mydumper.log

三.建立新库名
  create database md_ls_s2;

四.导入操作
cd /apps/sh/tool
./myloader --user=root --password='密码' -B md_ls_s2 -d /apps/mysql_backup/mydumper/temp
--socket /tmp/mysql3306.sock

报错一:
* (myloader:14026): CRITICAL **: Error restoring md_ls_s2.bak_17030701_go_anto_quotation from file md_ls.bak_17030701_adc_quotation-schema.sql: Table

'bak_17030701_adc_quotation' already exists
原因分析:是由于前面有执行过导入操作,虽然有报错,但表结构是有导入,所以下次再导入时会提示表存在。
处理方法:将md_ls_s2库drop,并重建后,重新导入。

报错二:
** (myloader:6931): CRITICAL **: Error restoring md_ls_s2.v_code_master from file md_ls.v_code_master-schema.sql.gz: Unknown storage engine 'MyISAM'
show variables like 'enforce_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| enforce_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.00 sec)

将表的定义sql文件更改为innodb:
 sed -i "s/)ENGINE=MyISAM;/)ENGINE=InnoDB;/g" *schema.sql

报错三:
** (myloader:19641): CRITICAL **: Error restoring md_ls_s2.v_code_master from file md_ls.v_code_master-schema.sql: This table type requires a primary key

show variables like 'innodb_force_primary_key';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_force_primary_key | ON    |
+--------------------------+-------+

set global innodb_force_primary_key=off

再执行恢复成功。

后续建好帐号和授权,即可交付给开发。

发布了197 篇原创文章 · 获赞 23 · 访问量 48万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章