本节解释使用基于事务的复制全局事务标识符(GTIDs)。当使用gtid时,每个事务在原始服务器上提交并由任何副本应用时都可以识别和跟踪;这意味着当启动一个新的副本或故障转移到一个新的源时,不需要使用gtid来引用日志文件或这些文件中的位置,这极大地简化了这些任务。因为基于gtid的复制完全基于事务,所以很容易确定源和副本是否一致;只要在源上提交的所有事务也在副本上提交,就可以保证两者之间的一致性。可以对gtid使用基于语句的复制或基于行的复制(请参阅第17.2.1节“复制格式”);但是,为了获得最好的结果,我们建议您使用基于行的格式。
gtid总是保存在源和副本之间。这意味着您总是可以通过检查其二进制日志来确定应用于任何副本上的任何事务的源。此外,一旦具有给定GTID的事务在给定的服务器上提交,具有相同GTID的任何后续事务将被该服务器忽略。因此,在源上提交的事务只能在副本上应用一次,这有助于保证一致性。
本节讨论以下主题:
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时提供新复制服务器的建议方法(请参阅第17.1.3.5节“使用gtid进行故障转移和扩展”).
使用基于gtid的复制时应注意的限制和限制(请参阅第17.1.3.7节“gtid复制的限制”).
可用于使用gtid的存储函数(参见第17.1.3.8节“操作gtid的存储函数示例”).
有关与基于gtid的复制相关的MySQL Server选项和变量的信息,请参见第17.1.6.5节“全局事务ID系统变量”.另请参阅第12.19节“与全局事务标识符(gtid)一起使用的函数”,它描述了MySQL 8.0支持的用于gtid的SQL函数。