zoukankan      html  css  js  c++  java
  • MySQL常见的主从复制错误有哪些?如何处理?

    MySQL常见的主从复制错误有哪些?如何处理?
    
    
    一、1032错误
    1032错误即从库比主库少数据,分为UPDATE场景和DELETE场景。
    UPDATE场景处理思路是:
        1、主要处理思路是将丢失的数据在从库补上。
        2、找到sql_thread停止位置(Relay_Master_Log_File + Exec_Master_Log_Pos)
        3、去主库解析对应位置binlog,获取到UPDATE相关的数据。
        4、在slave上插入数据。
        5、重启sql_thread
    
    DELETE场景处理思路:
        1、主要的处理思路就是跳过该事务。
        2、非GTID环境下通过设置sql_slave_skip_counter=1跳过该事务。
        3、GTID环境下通过注入空事务方式跳过该事务,简要步骤如下:
            3.1set gtid_next='xxx';
            3.2begin;commit;
            3.3set gtid_next='AUTOMATIC';
            3.4、详细可参考:http://imysql.com/2014/07/31/mysql-faq-exception-replication-with-gtid.shtml
        4、重启sql_thread
    
    
    二、1062错误。
    1062错误即从库比主库多数据(主键冲突情况)。
    处理思路比较简单,即删除对应的主键冲突数据即可:
        1、删除从库上对应的数据(根据主键)。
        2、重启sql_thread
    
    
    三、1236错误
    1236错误即从库需要开始同步的binlog位置已经不存在主库上,该错误出现分几种情况。
        1、GTID从库需要开始复制的GTID要比主库上已经purged GTID位置要小。
        2、GTID从库GTID_SET比主库上缺失部分(如主库有多个GTID_SET,而从库只有一个)。
        3、非GTID环境下,从库去拉binlog的时间找不到对应的binlog(即从库当前的binlog比主库最旧的binlog之间存在缺失)。
    
    
    那么对应的处理方式是:
        1、对于1、3两种情况,建议是直接通过备份的方式直接重新做主从。
        2、对于第2种情况,可以通过set global gtid_purged='xxx'的方式将差异的GTID_SET部分补全。
  • 相关阅读:
    03_ if 练习 _ little2big
    uva 11275 3D Triangles
    uva 12296 Pieces and Discs
    uvalive 3218 Find the Border
    uvalive 2797 Monster Trap
    uvalive 4992 Jungle Outpost
    uva 2218 Triathlon
    uvalive 3890 Most Distant Point from the Sea
    uvalive 4728 Squares
    uva 10256 The Great Divide
  • 原文地址:https://www.cnblogs.com/zhouwanchun/p/13141983.html
Copyright © 2011-2022 走看看