在MySQL中,出现Executed_Gtid_Set 乱序增长的场景

在MySQL中,Executed_Gtid_Set 乱序增长通常指的是该集合中出现非连续的区间(即"空洞")。这打破了正常情况下GTID应严格递增连续的预期,主要由以下四种场景导致:

  1. 并行复制

这是最常见的情况。从库开启并行复制后,多个worker线程并发回放事务。由于各事务提交速度不同,后面的可能先执行完,导致Executed_Gtid_Set在尾部出现暂时不连续。例如,1-92:94-96:98-100(缺失93、97等)。

· 特征:只要主库停止写入,从库追平后集合最终会恢复连续。

  1. 手动跳过事务

当复制因错误中断,管理员手动跳过一个事务时,该GTID会以单独区间被记录。若之前已执行到N,跳过N+1,集合会变成 1-N : N+2-M,形成永久空洞。

· 特征:属于永久性空洞,通常用于跳过确认为"安全"的错误。

  1. 直接修改GTID_PURGED

通过RESET MASTER后直接设置GTID_PURGED来"伪造"执行历史,会引入一个与当前实际执行状态不符的乱序集合。

· 风险:极易导致主从不一致或复制中断(如1236错误)。

  1. 主机崩溃

主库非正常关机,可能导致已发送到从库但尚未在本地落盘的事务丢失。从库记录的GTID集合因此多于重启后的主库,这种不一致在集合中表现为"多余的区间"。

· 特征:主库比从库"少"了某些GTID,是数据不一致的严重信号。

总结

Executed_Gtid_Set 中的乱序(空洞)并非一定是故障。并行复制导致的尾部临时空洞通常无需干预,而因手动跳过、参数误操作或主机崩溃导致的永久性不一致,则需要通过重建同步或数据校验来处理。

如果你在执行某个具体操作后发现了 GTID 乱序,可以告诉我具体场景,我帮你分析是否需要修复。

相关推荐
java_logo3 分钟前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
广州灵眸科技有限公司7 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
Cloud云卷云舒10 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手10 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学10 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh12 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户713335851562413 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z1234567898613 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD13 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo13 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程