问题系列~主从复制异常的案例

简介 mysql主从不同步的几种情况
 1 错误问题:
    Could not execute Write_rows event on table practice.temp_baofoo_unbind; Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again, Error_code: 1197; Writing one row to the row-based binary log failed, Error_code: 1534; handler error HA_ERR_RBR_LOGGING_FAILED; the event's master log binlog.000017, end_log_pos 268602107
问题原因: 主从变量不一致
解决方式:保证主库和从库相关变量一致性
2 错误问题
         1  Could not execute Delete_rows event on table hcy.t1; Can't find record in 't1',  
         2  Could not execute Write_rows event on table hcy.t1;  Duplicate entry '2' for key 'PRIMARY'
问题原因:经典的数据错乱问题导致,可能造成的原因有几个
1 在从库进行了DML操作
2 从库应用relay-log发生了异常
解决方式:
1 利用binlog回滚语句在从库进行回滚操作,保证从库的read_only
2 重做从库本身,因为可能后续还有一系列的复制异常
    3  错误问题
          1 [ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
问题原因:从库去寻找需要的binlog日志,但是主库已经删除
解决方式:利用主库备份一份新的实例,从新搭建从库
  4 错误问题
  Got fatal error 1236 from master when reading data from binary log: 'Cannot replicate anonymous transaction when AUTO_POSITION = 1
     问题原因:匿名事务(anonymous transaction ) 的生成是无法生成全局GTID的
    解决方式:  1  重新在从库执行匿名事务.然后重启slave线程即可 2 严格控制开发行为,不允许手动更改环境变量
   5 错误问题
1 Relay log write failure:could not queue event from master
问题原因:
1 master的binlog本身不完整(比如主库的磁盘写满,io出现问题)
2 master的binlog本身存在大事务导致,前面还会提示一个hearbeat loss的错误在日志中
解决方式: 1 修复主库的相关问题 2 尽量减少主库用大事务的机会

原文地址:https://www.cnblogs.com/danhuangpai/p/14166759.html