MySQL(二十三)GTID 复制

Posted 绝世好阿狸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL(二十三)GTID 复制相关的知识,希望对你有一定的参考价值。

本来想自己搭建,结果各种error,放弃。。。(mysql太难用。。。没做过运维)

使用传统的基于文件位置的方式:

需要slave指定复制的文件和位置,可能不准,位置靠后会少日志,位置靠前可能冲突,但是宁可冲突也不能少,所以需要手动跳过,不太方便。

基于GTID的模式:

在执行事务时,都会先生成gtid,具体gtid的值是啥,取决于一个session变量,可以是自增也可以是固定值,一般是自增;

gtid的格式是serverid:txid;

在为当前事务生成了gtid以后,就会执行该事务,执行前,会判断此事务的gtid是否在已执行过的gtid集合里,如果在,就跳过该事务,否则执行事务,并记录到gtid结合里;

主库执行完事务,记录的binlog里会有一条set gtid next = xxx的语句。这样从库在执行binlog时,不会按照自己的gtid分配策略给该事务分配gtid,而是用了主库生成的gtid,这样,主库就可以保证任何从库执行事务时,gtid是唯一的。从库同样根据自己的gtid执行集合判断是否执行过该事务;

如果需要换主,就将自己的gtid集合发送给新的master,master对比自己的gtid集合,计算出差集,将差集里的事务发送给slave。整个过程不需要人工指定位置,由slave和master基于各自的gtid自动完成,方便了很多;

那如果发生冲突怎么解决?可以set gtid = xxx,xxx是冲突的事务的gtid,把这个gtid加入到执行集合中,这样就相当于跳过了这个事务。

 

先记录几个:

https://cloud.tencent.com/developer/article/1401313

http://www.xiaotanzhu.com/%E6%95%B0%E6%8D%AE%E5%BA%93/2016/08/25/mysql-gtid-master-slave.html

 

 

 

以上是关于MySQL(二十三)GTID 复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL体验gtid复制过程

MySQL体验gtid复制过程

[mysql] MariaDB 10.0.10 GTID复制

redis 简单整理——复制的原理[二十三]

Centos7搭建基于GTID的MySQL主从复制架构

MySQL GTID