如何测试主从复制_mysql验证方法

来源:这里教程网 时间:2026-02-28 20:35:49 作者:

要验证 MySQL 主从复制是否正常工作,关键在于确认数据是否实时、准确地从主库同步到从库,并排除常见延迟或中断问题。下面介绍几种实用、可操作的验证方法。

检查复制线程状态

这是最基础也最重要的一步。登录从库执行:

SHOW SLAVE STATUS\G

重点关注以下字段:

Slave_IO_RunningSlave_SQL_Running 都应为 Yes,表示 I/O 线程和 SQL 线程都在运行 Seconds_Behind_Master 显示从库落后主库的秒数,理想值是 0(偶尔波动属正常,持续大于 0 需排查) IO_Relay_Log_PosRead_Master_Log_Pos 应随时间递增,若长期不变可能线程已卡住

比对主从库数据一致性

仅看线程状态不够,还需验证实际数据是否一致。常用方式有:

在主库插入一条带唯一标识的测试记录(如
INSERT INTO test_table VALUES (NOW(), 'verify_replication');
),稍等几秒后在从库查询是否出现
对比主从库相同表的行数:
SELECT COUNT(*) FROM table_name;
,尤其适用于小表或阶段性校验
对关键字段做校验和(如用
CRC32(CONCAT(col1,col2))
MD5(GROUP_CONCAT(... ORDER BY id))
),适合中等规模数据

查看主从 binlog 位置是否连续

主库写入靠 binlog,从库靠读取并重放这些日志。可通过位置点判断是否断点:

主库执行
SHOW MASTER STATUS;
,记下 FilePosition
从库执行
SHOW SLAVE STATUS\G
,查看 Master_Log_FileRead_Master_Log_Pos
二者应基本一致(允许短暂延迟),若 Master_Log_File 不同或 Read_Master_Log_Pos 停滞,说明 I/O 线程未拉取新日志

模拟写入并观察延迟变化

真实业务场景下,延迟可能随负载浮动。可主动施加压力验证稳定性:

在主库批量插入几百条记录,观察从库 Seconds_Behind_Master 是否先升高再回落至 0 使用
pt-table-checksum
(Percona Toolkit 工具)做全量一致性校验,适合生产环境定期巡检
开启从库的
log_slave_updates=ON
后,还可将该从库作为二级主库,进一步验证 binlog 转发能力

相关推荐