mysql之 重建GTID下主从关系


主库:
mysqldump -uroot -pmysql -S /tmp/mysql.sock1 --single-transaction --add-drop-database --master-data=1 --all-databases>test_backup.sql


说明:
--all-databases :备份所有的数据库
--single-transaction : 在一个事物中导出,确保产生一致性的备份 ,当前只对innodb支持
--master-data : 备份的时候dump出 CHANGE MASTER 信息(file 和 pos),可供 主从复制 的时候使用,默认值为1 。当值设置为 2 的时候,也会 dump出信息,但是会被 注释 掉。
--add-drop-database : 导出的sql中,包含如果数据库存在就删除在创建的sql

从库:
mysql>reset master;
mysql>reset slave all;

-- 导入数据库 
# mysql -uroot -pmysql <test_backup.sql

mysql>change master to
master_host='10.100.25.40',
master_port=3307,
master_user='rpl',
master_password='mysql', 
master_auto_position=1;

mysql> start slave;
mysql> show slave statusG;


说明:

## 在开启GTID数据库下导入报错
mysql -uroot -p userdb < userdb.sql
Password:xxxxxxxx
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

mysql提示: 当前数据库实例中开启了 GTID 功能, 在开启有 GTID 功能的数据库实例中, 导出其中任何一个库, 如果没有显示地指定--set-gtid-purged参数, 都会提示这一行信息. 意思是默认情况下, 导出的库中含有 GTID 信息, 如果不想导出包含有 GTID 信息的数据库, 需要显示地添加--set-gtid-purged=OFF参数.或者在导入时,清空所有原GTID信息(reset master;reset slave all;)

原文地址:https://www.cnblogs.com/andy6/p/9841922.html