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
相关产品推荐
相关产品推荐

