本节介绍使用全局事务标识符 的基于事务的复制 (GTID),在 MySQL 5.6.5 中引入。使用 GTID 时,可以识别和跟踪每个事务,因为它在原始服务器上提交并由任何副本应用;这意味着在启动新副本或故障转移到新源时,没有必要使用 GTID 来引用日志文件或这些文件中的位置,这大大简化了这些任务。因为基于GTID的复制是完全基于事务的,所以很容易判断源和副本是否一致;只要在源上提交的所有事务也在副本上提交,就可以保证两者之间的一致性。您可以将基于语句或基于行的复制与 GTID 一起使用(请参阅 第 17.1.2 节,“复制格式”); 但是,为了获得最佳效果,我们建议您使用基于行的格式。
本节讨论以下主题:
如何定义和创建 GTID,以及它们在 MySQL 服务器中的表示方式(请参阅 第 17.1.3.1 节,“GTID 概念”)。
设置和启动基于 GTID 的复制的一般过程(请参阅第 17.1.3.2 节,“使用 GTID 设置复制”)。
使用 GTID 时配置新复制服务器的建议方法(请参阅 第 17.1.3.3 节,“使用 GTID 进行故障转移和横向扩展”)。
使用基于 GTID 的复制时应注意的限制和限制(请参阅 第 17.1.3.4 节,“使用 GTID 进行复制的限制”)。
禁用 GTID 的过程,如果您启用了 GTID 并且要降级到不支持 GTID 的 MySQL 版本,则必须执行此操作(请参阅 第 17.1.3.5 节,“禁用 GTID 事务”)。
有关与基于 GTID 的复制相关的 MySQL 服务器选项和变量的信息,请参阅 第 17.1.4.5 节,“全局事务 ID 选项和变量”。另见 第 12.18 节,“与全局事务 ID 一起使用的函数”,它描述了 MySQL 5.6 支持的用于 GTID 的 SQL 函数。
NDB
GTID 与NDB Cluster 使用
的存储引擎不兼容或不支持
。在 NDB Cluster 中启用 GTID 很可能会导致问题NDB
,并导致 NDB Cluster Replication 失败。