上QQ阅读APP看书,第一时间看更新
第3章 GTID与复制
MySQL复制中使用的事务类型有以下两种:
- GTID事务:在二进制日志中每个GTID事务始终都以Gtid_log_event开头。可以使用GTID或使用文件名和位置来定位GTID事务。
- 匿名事务:MySQL 8的二进制日志中的每个匿名事务都以Anonymous_gtid_log_event开头,不分配GTID。匿名事务只能使用文件名和位置来定位。
在GTID出现之前,在“一主多从”的复制拓扑结构中,如果主库宕机,则需要从多个从库选择一个作为新主库。这个过程比较复杂,没有一种直截了当的方法找到其他从库对应的新主库二进制日志位置。通常的做法是先要寻找每个从库复制原主库的最后语句,然后找到新主库中包含该语句的二进制日志文件,其中该语句后的第一个事件位置即为连接新主库的二进制位置。主要难点在于不存在一个唯一标识指出“复制原主库的最后语句”,于是后来的MySQL中就出现了GTID的概念。