本人遇到的问题发生在mysql 5.6.21 M-M中:
Master1 Server version: 5.6.21-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)
Master2 Server version: 5.6.21-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)
Master1 Os version: CentOS release 6.5 (Final)
Master2 Os version: CentOS release 6.5 (Final)
同步相关参数:
Master1:
server-id=1
log-slave-updates
auto_increment_increment=2
auto_increment_offset=1
replicate-do-db=*****
relay_log_recovery
Master2:
server-id=2
log-slave-updates
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=*****
relay_log_recovery
问题描述:
SQLyog对Master1做DML操作时,记录未同步到Master2对应库表里;使用其他工具操作mysql,同步正常
排查过程:
1.首先查看Master1和Master2的master、slave状态,均显示基本正常;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
2.然后查看errlog,无相关错误信息
3.用mysqlbinlog解析master2的relay log和binlog,发现在relay log中存在SQLyog工具的DML语句,但是在binlog里面没有出现该DML语句
相关分析:
在“slave” 的relay中找到了相关sql,但是在binlog中没找到该sql,说明salve I/O线程日志的同步正常;只是slave SQL线程执行SQL有异常,
但是查看master和slave的状态,均显示正常,而且无报 错信息。网上查找相关资料,发现几个SQLyog同步问题比较典型的帖子,但均无解决办
法:
http://blog.csdn.net/linvo/article/details/6566215
http://bbs.csdn.net/topics/390672280
如果是客户端工具导致主主、主从同步异常的话,感觉解释起来有点太牵强,理论上讲不通,除非是mysql Slave_SQL_Running线程对
SQLyog的语句解析异常,直接跳过了SQLyog编译出的sql,这么解释还是感觉有点问题;但是说回来,用其他工具来操作mysql,同步正常无异
常。总之感觉有点怪异。
请求大神们能帮忙解释一下此问题。
原文地址:http://blog.csdn.net/melody_mr/article/details/41675941