MySQL Replay(GTID)
MySQL
1 Retrieved_Gtid_Set 和 Executed_Gtid_Set
show slave status 可以看到这两个指标
1.1 Retrieved_Gtid_Set
定义:表示从库(Slave)通过复制通道从主库(Master)接收到的所有GTID事务集合。
格式:由主库的
server_uuid
和事务ID范围组成,例如:2a09ee6e-645d-11e7-a96c-000c2953a1cb:1-3
表示从server_uuid
为2a09ee6e-645d-11e7-a96c-000c2953a1cb
的主库接收了事务ID为1到3的3个事务。作用:
反映从库已从主库获取的事务范围。
用于判断复制延迟(若与主库的
Executed_Gtid_Set
不一致,可能存在延迟)。
示例场景:
主库执行了3个事务(创建表+插入2条数据),从库的
Retrieved_Gtid_Set
显示为2a09ee6e-645d-11e7-a96c-000c2953a1cb:1-3
,表明已接收全部事务。
1.2 Executed_Gtid_Set
定义:表示从库本地已实际执行的所有GTID事务集合,包括:
通过复制从主库接收的事务。
从库本地直接执行的事务(如手动插入数据)。
格式:可能包含多个
server_uuid
对应的事务范围,例如:84d15910-b6a4-11e4-af2c-080027880ca6:1, 966073f3-b6a4-11e4-af2c-080027880ca6:1-29
表示从库执行了本地事务84d15910-b6a4-11e4-af2c-080027880ca6:1
和从主库966073f3-b6a4-11e4-af2c-080027880ca6
接收的事务1-29。作用:
确认从库已处理的事务范围。
检测复制错误(如
Retrieved_Gtid_Set
包含但Executed_Gtid_Set
未包含的事务,可能因冲突或错误未执行)。
示例场景:
从库接收主库事务
2a09ee6e-645d-11e7-a96c-000c2953a1cb:1-3
并全部执行,此时Executed_Gtid_Set
也显示为2a09ee6e-645d-11e7-a96c-000c2953a1cb:1-3
。
2 关键对比与监控建议
正常状态:
Retrieved_Gtid_Set
⊆Executed_Gtid_Set
(从库接收的事务均已执行)。异常状态:
若
Retrieved_Gtid_Set
包含事务但Executed_Gtid_Set
未包含,可能因:事务冲突(如主键重复)。
从库SQL线程错误(需检查
Last_SQL_Error
)。网络中断导致事务未完全应用。
若
Retrieved_Gtid_Set
与主库不一致,可能因复制中断或配置错误。
3 实践
3.1 从库本地回放未完成
Retrieved_Gtid_Set a55e551e-3ad3-11f0-87ca-9c63c038d158:1-175996279
Executed_Gtid_Set a4533079-3ad3-11f0-87ca-b83fd2aad9d8:1-9356444,
a55e551e-3ad3-11f0-87ca-9c63c038d158:1-175988466
3.2 切主之后的变化
Retrieved_Gtid_Set a4b62ac8-3ad3-11f0-87ca-9c63c0365012:1-144353,
a55e551e-3ad3-11f0-87ca-9c63c038d158:175990405-175997748
Executed_Gtid_Set a4533079-3ad3-11f0-87ca-b83fd2aad9d8:1-9356444,
a4b62ac8-3ad3-11f0-87ca-9c63c0365012:1-144353,
a55e551e-3ad3-11f0-87ca-9c63c038d158:1-175997748
Last updated