1、如何定义和生成GTIDs
唯一性:在所有主从库都是唯一的,由二元组构成
?
|
source_id标记主库的
1.1 server_uuid
获取server_uuid的方式
a、判断data_dir/auto.cnf文件是否存在,如果存在返回
b、不存在的话,自动产生一个新的UUID,并保存到data_dir/auto.cnf中
auto.cnf文件格式如下:
?
|
auto.cnf文件是自动产生的,不要试图修改这个文件。
如果主库的server_uuid发生变化的话,需要重新change master to,故这个auto.cnf文件是只读的。
http://dev.mysql.com/doc/refman/5.6/en/replication-options.html#sysvar_server_uuid
1.2 GTID sets
?
|
1.3 GTID产生过程
(1)事务执行完成,并在主库提交
使用主库的UUID以及最小的事务序列数,并将GTID记录到主库的binlog中
(2)当binlog的数据被从库接收后,并存储在relay log中,此时从库SQL线程读取GTID,并将其赋值给变量gitd_next
(3)从库检查GTID,确认没有执行过。如果这个GTID没有使用过,从库写入GTID,并回放这个事务。
slave需要确保两点:
a、GTID没有被之前的事务使用过
b、相关联的事务没有被提交
(4)因为gtid_next非空,slave不会尝试产生一个新GTID,而是将GTID保存在变量gtid_next中
?
|
2、如何设置基于GTIDs的同步
3、使用GTIDs的一些建议
4、使用GTIDs的限制
5、参考文献
http://dev.mysql.com/doc/refman/5.6/en/replication-gtids.html
http://qing.blog.sina.com.cn/1757661907/68c3cad333002qhe.html
http://qing.blog.sina.com.cn/1757661907/68c3cad333002qsk.html
http://qing.blog.sina.com.cn/1757661907/68c3cad333002s5l.html
MySQL GTIDs(global transaction identifiers),布布扣,bubuko.com