You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.6主从服务器数据复制同步校验问题求助

解决mysqlrplsync校验MySQL主从数据一致性时的错误问题

结合你的场景(MySQL 5.6 + RHEL 7.0,主从复制状态显示正常,但执行mysqlrplsync时出错),我整理了几个常见的排查方向和解决方案:

1. 先确认工具兼容性与依赖

mysqlrplsync是MySQL Utilities套件里的工具,版本兼容性很关键:

  • MySQL 5.6对应的MySQL Utilities建议用1.6.x版本,过高或过低都会引发兼容性问题。你可以执行mysqlrplsync --version查看工具版本,同时对比mysql --version的客户端版本,确保两者匹配。
  • 如果没安装MySQL Utilities,需要先通过yum或源码安装(RHEL7可以用官方yum源完成安装)。

2. 检查连接参数的坑

你给出的命令里有几个容易踩的点:

  • 命令中的反斜杠\是bash的续行符,要确保输入时反斜杠后直接回车,没有多余空格;如果是复制粘贴的话,可能会出现转义错误,建议手动输入或去掉续行符写成一行:
    mysqlrplsync --master=repuser:123@localhost:3306 --slaves=repuser:123@192.168.10.11:3306
    
  • 你的从库列表里包含了localhost:3306,如果主库本身就在本地,这相当于把主库当成从库来校验,会导致逻辑混乱,一定要去掉这个重复的本地实例。
  • 确认repuser的权限:这个账号需要在主从库都拥有SELECT、REPLICATION SLAVE、REPLICATION CLIENT权限,授权语句如下:
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repuser'@'%' IDENTIFIED BY '123';
    FLUSH PRIVILEGES;
    

3. 修正后的命令示例

如果只需要校验全库一致性,用这个命令就可以:

mysqlrplsync --master=repuser:123@localhost:3306 \
--slaves=repuser:123@192.168.10.11:3306

如果只想校验特定数据库(比如mydb),可以加上--databases参数缩小范围:

mysqlrplsync --master=repuser:123@localhost:3306 \
--slaves=repuser:123@192.168.10.11:3306 \
--databases=mydb

4. 排查网络与防火墙问题

主库需要能正常访问从库的3306端口:

  • 在主库上执行nc -zv 192.168.10.11 3306测试连通性,如果不通,检查从库的防火墙规则:
    # 临时关闭防火墙测试
    systemctl stop firewalld
    # 永久开放3306端口
    firewall-cmd --add-port=3306/tcp --permanent
    firewall-cmd --reload
    
  • 同时确认从库的my.cnf里没有绑定127.0.0.1(也就是bind-address要设为0.0.0.0或从库的内网IP),否则外部无法连接。

5. 查看详细错误信息定位问题

如果以上步骤都没解决,加上--verbose参数执行命令,获取更详细的错误日志:

mysqlrplsync --master=repuser:123@localhost:3306 \
--slaves=repuser:123@192.168.10.11:3306 \
--verbose

根据输出的详细错误(比如权限不足、表结构不匹配、同步延迟等),再针对性处理。

内容的提问来源于stack exchange,提问作者Mubashar Iftikhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:35:39