在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 乱序,可以告诉我具体场景,我帮你分析是否需要修复。

相关推荐
这个DBA有点耶1 小时前
同城双活落地的三座山:网络延迟、脑裂预防、反向同步
数据库·架构·dba
青春之我_XP1 小时前
MySQL 常用日期函数 实战指南
数据库·sql·mysql·数据分析·数据库开发·日期函数
Nturmoils1 小时前
sys_dump 备了库,角色和权限别漏在外面
数据库
接着奏乐接着舞。1 小时前
【2026】73道Redis 常见面试题与参考答案
数据库·redis·后端·缓存
其实防守也摸鱼3 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
人生百态,人生如梦3 小时前
每日论文解读(9.1)——ReToolSQL:面向鲁棒Text-to-SQL的Agentic强化学习与工具增强两阶段训练框架
数据库·sql
DevOpenClub3 小时前
网页采集如何稳定输出结构化数据:JSON、链接与快照三阶段流水线
数据库·json·api
其实防守也摸鱼3 小时前
免杀与持久化入门:从载荷免杀到隐蔽通道的完整指南
运维·服务器·数据库·安全·github·copilot·渗透
SelectDB3 小时前
统一全文检索与 SQL 分析:Apache Doris 日志分析实践
运维·数据库·掘金技术征文