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 信息之后就可以导入了。