mysql5.6基于GTID主从复制设置

1.主库和从库都必须要开启binlog
2.主库和从库server-id不相同
3.建立主从辅助用户
grant replication slave on . to 'rep'@'192.168.200.%' identified by 'oldboy';
[mysqld]
server-id=1
log-bin=mysql.bin
binlog_format=row
gtid_mode=ON
enforce_gtid_consistency
log_slave_updates
relay_log_purge=OFF
备注:以上设置必须存在。

change master to master_host='192.168.200.77',
master_port=3306,
master_user='rep',
master_password='oldboy123',
master_auto_position=1;

start slave;
show slave status\G;
reset slave all; 清除所有slave信息

错误提示:导出时提示warning,A partial dump from a server that has GTIDs
[root@bastion-IDC ~]# mysqldump -uroot -p xqsj_db > xqsj_db20160811.sql
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.

关于GTID是5.6以后,加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力。
官方给的:A global transaction identifier (GTID) is a unique identifier created and associated with each transaction committed on the server of origin (master).
所以可能是因为在一个数据库里面唯一,但是当导入其他的库就有可能重复。所有会有一个提醒。

可以通过添加--set-gtid-purged=off 或者–gtid-mode=OFF这两个参数设置。
很有肯能是在导入库中重新生产GTID,而不用原来的。

[root@master]# mysqldump -uroot -poldboy --set-gtid-purged=off -A -B -F > all.sql #这样就ok了!