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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章