本节介绍使用全局事务标识符 (GTID) 的基于事务的复制。使用 GTID 时,每个事务可以在源服务器上提交时被识别和跟踪,并在任何副本上应用;这意味着使用 GTID 时,在启动新的副本或故障转移到新的源时,不再需要引用日志文件或文件中的位置,这极大地简化了这些任务。由于基于 GTID 的复制完全是基于事务的,因此很容易确定源和副本是否一致;只要源上提交的所有事务也都在副本上提交,则源和副本之间的一致性就得到保证。您可以将基于语句的复制或基于行的复制与 GTID 一起使用(参见第 19.2.1 节,“复制格式”);但是,为了获得最佳效果,我们建议您使用基于行的格式。
GTID 始终在源和副本之间保留。这意味着您始终可以通过检查其二进制日志来确定在任何副本上应用的任何事务的源。此外,一旦在给定服务器上提交了具有给定 GTID 的事务,该服务器就会忽略任何后续具有相同 GTID 的事务。因此,在源上提交的事务在副本上最多只能应用一次,这有助于保证一致性。
本节讨论以下主题
GTID 如何定义和创建,以及如何在 MySQL 服务器中表示它们(参见第 19.1.3.1 节,“GTID 格式和存储”)。
GTID 的生命周期(参见第 19.1.3.2 节,“GTID 生命周期”)。
用于同步使用 GTID 的副本和源的自动定位功能(参见第 19.1.3.3 节,“GTID 自动定位”)。
设置和启动基于 GTID 的复制的一般过程(参见第 19.1.3.4 节,“使用 GTID 设置复制”)。
在使用 GTID 时,为配置新的复制服务器建议的方法(参见第 19.1.3.5 节,“使用 GTID 进行故障转移和扩展”)。
在使用基于 GTID 的复制时应注意的限制和局限性(参见第 19.1.3.7 节,“使用 GTID 进行复制的限制”)。
您可以用来处理 GTID 的存储函数(参见第 19.1.3.8 节,“用于操作 GTID 的存储函数示例”)。
有关与基于 GTID 的复制相关的 MySQL Server 选项和变量的信息,请参见 第 19.1.6.5 节,“全局事务 ID 系统变量”。另请参见 第 14.18.2 节,“与全局事务标识符 (GTID) 一起使用的函数”,其中描述了 MySQL 8.4 支持用于 GTID 的 SQL 函数。