MySQL Replication--GTID基础

======================================

TID(Trasaction ID)
TID代表实例上已经提交的事务数量,并随着事务提交递增

UUID代表MYSQL实例的唯一表示

GTID(Global Trasaction ID)
GTID由MYSQL实例的UUID+已提交事务的TID组成,代表一个全局唯一的编号。

 

GTID的出现用来解决复制中一个事务在多个节点的binlog文件和位置不一样的问题,当主库发生故障切换后,复制的备库需要与新主库进行关联,使用master_log_file和master_log_pos来重新配置从库变得复杂困难,而基于GTID复制,备库无需关心GTID的位置,直接使用下面语句即可用轻松完成主库切换后的从库配置。:

CHANGE MASTER TO MASTER_HOST='xxx', MASTER_AUTO_POSITION

 

在MySQL 5.6版本中引入GTID,使用gtid_mode参数来开启或关闭GTID特性,但在MySQL 5.7版本中引入 Anonymous_Gtid的二进制日志event类型,即使在MySQL 5.7版本中停用GTID特性,也会在事务开始前创建一个Anonymous_Gtid。

 

======================================

使用GTID限制

1、无法使用SQL_SKIP_SLAVE_COUNTER命令跳过错误

2、无法搭建GTID模式实例和非GTID模式实例之间的复制。

3、不支持非事务型存储引擎如MYISAM

4、不支持CREATE TABLE SELECT 语句

5、不支持CREATE/DROP TEMPORARY TEBALE 操作

 

在MySQL 5.6版本中,gtid_mode参数全局只读,修改该参数需要重启实例。

在MySQL 5.7版本中,可以在线开启GTID模式,直达连接:http://dev.mysql.com/doc/refman/5.7/en/replication-mode-change-online-enable-gtids.html。

======================================

多线程复制:

1>exec_master_log_pos对复制不在有效,可以使用executed_gtid_set来查看复制进度

2>SQL_SLAVE_SKIP_COUNTER 无法使用

3>不支持START SLAVE UNTIL命令

4>slave_transaction_retries 参数被当做0来处理

 

======================================

GTID复制延迟监控

只有当网络正常且Master端随时有数据更新的的情况下,才可以使用seconds_behind_master来评估主从库之间的复制延迟。

 

======================================

 

posted @ 2019-03-31 21:48  TeyGao  阅读(225)  评论(0编辑  收藏  举报