概念
binlog_order_commits
MySQL 5.6.6引入,默认开启
事务按照在binlog中写入的顺序进行commit
slave_preserve_commit_order
MySQL 5.7.5引入,默认关闭
在并行复制场景下,事务在Slave上commit与在Msater上的commit的顺序保持一致
接下来分析什么场景可能出现乱序的GTID
并行复制
在并行复制场景下,5.7.7之前因为没有slave_preserve_commit_order,并不保证事务在Slave上commit与在Msater上的commit的顺序一致
- 如果Master是事务顺序提交,GTID严格递增
在Slave上,可能由于并行复制导致事务的提交顺序与Master上并不一致,那么Slave的GTID就产生了“局部乱序”
人为修改GTID_NEXT
如果当前gtid_executed为server_uuid:1-10
- 设置gtid_next = server_uuid:15
- 执行事务A,A的GTID为server_uuid:15
- 设置gtid_next = AUTOMATIC
- 执行事务B,B的GTID为server_uuid:11
那么A,B的GTID就是“局部乱序”的,binlog中的记录类似这样: