16.1.3 使用全局事务标识符进行复制

本节说明使用全局事务标识符(GTID)的基于事务的复制。使用 GTID 时,每笔 Transaction 都可以在提交到原始服务器上并由任何副本应用时进行标识和跟踪。这意味着在启动新副本或故障转移到新源时,使用 GTID 引用日志文件或这些文件中的位置时没有必要,这极大地简化了这些任务。由于基于 GTID 的复制完全基于事务,因此很容易确定源和副本是否一致;只要在源上提交的所有事务也都在副本上提交,则可以保证两者之间的一致性。您可以对 GTID 使用基于语句的复制或基于行的复制(请参见第 16.2.1 节“复制格式”);但是,为了获得最佳结果,我们建议您使用基于行的格式。

GTID 始终在源和副本之间保留。这意味着您始终可以通过检查二进制日志来确定应用于任何副本的任何事务的源。另外,一旦在给定服务器上提交了具有给定 GTID 的事务,该服务器将忽略具有相同 GTID 的任何后续事务。因此,在源上提交的事务只能在副本上应用一次以上,这有助于确保一致性。

本节讨论以下主题:

有关与基于 GTID 的复制相关的 MySQL Server 选项和变量的信息,请参见第 16.1.6.5 节“全局事务 ID 系统变量”。另请参见第 12.18 节“与全局事务标识符一起使用的函数”,它描述了 MySQL 5.7 支持与 GTID 一起使用的 SQL 函数。