1.導出數據
$ mysqldump -h host -u username -p 導出數據庫 name > /boss.sql
此時mysql warning 信息:
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events
2. 目標庫導入數據
$ mysql -h host -u username -p 目標數據庫 name < /boss.sql
報錯error:
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
解決:
當前數據庫實例中開啓了 GTID 功能, 在開啓有 GTID 功能的數據庫實例中, 導出其中任何一個庫, 如果沒有顯示地指定--set-gtid-purged
參數, 都會提示這一行信息. 意思是默認情況下, 導出的庫中含有 GTID 信息, 如果不想導出包含有 GTID 信息的數據庫, 需要顯示地添加--set-gtid-purged=OFF
參數.
方案:
1. 導出的時候加上參數:--set-gtid-purged=OFF
$ mysqldump -h host -u username -p --set-gtid-purged=OFF databasename > /boss.sql
2.在目標數據庫中執行mysql> reset slave all;
mysql> reset master;
清空所有 GTID 信息之後就可以導入了。