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 从库本地回放未完成
3.2 切主之后的变化
4 切换前置检查
4.1 设置只读
4.2 检查本地回放是否完成
检查 Retrieved_Gtid_Set 和 Executed_Gtid_Set 是否一致
4.3 停止 slave io_thread
4.4 授权 Grant replication privileges for slaves
4.5 返回切换辅助信息
返回 GLOBAL VARIABLES 中的 gtid_executed
Last updated