zoukankan      html  css  js  c++  java
  • 主从数据不一致导出同步错误(从库记录存在导致写入报主键重复)

    mysql> show slave status G;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.1.22
                      Master_User: repl
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: binlog.000083
              Read_Master_Log_Pos: 130645397
                   Relay_Log_File: relay-bin.000003
                    Relay_Log_Pos: 125560703
            Relay_Master_Log_File: binlog.000083
                 Slave_IO_Running: Yes
                Slave_SQL_Running: No
                  Replicate_Do_DB:
              Replicate_Ignore_DB:
               Replicate_Do_Table:
           Replicate_Ignore_Table:
          Replicate_Wild_Do_Table:
      Replicate_Wild_Ignore_Table:
                       Last_Errno: 1062
                       Last_Error: Could not execute Write_rows event on table db_message.app_uid_dev_token; Duplicate entry '508452' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log binlog.000083, end_log_pos 125560887
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 125560539
                  Relay_Log_Space: 130645963
                  Until_Condition: None
                   Until_Log_File:
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File:
               Master_SSL_CA_Path:
                  Master_SSL_Cert:
                Master_SSL_Cipher:
                   Master_SSL_Key:
            Seconds_Behind_Master: NULL
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error:
                   Last_SQL_Errno: 1062
                   Last_SQL_Error: Could not execute Write_rows event on table db_message.app_uid_dev_token; Duplicate entry '508452' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log binlog.000083, end_log_pos 125560887
      Replicate_Ignore_Server_Ids:
                 Master_Server_Id: 1
                      Master_UUID: c95fcd3a-98ae-11e5-b124-5820b106a87c
                 Master_Info_File: /home/mysql/data/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State:
               Master_Retry_Count: 86400
                      Master_Bind:
          Last_IO_Error_Timestamp:
         Last_SQL_Error_Timestamp: 200707 18:30:51
                   Master_SSL_Crl:
               Master_SSL_Crlpath:
               Retrieved_Gtid_Set: c95fcd3a-98ae-11e5-b124-5820b106a87c:26487093-26666024
                Executed_Gtid_Set: c95fcd3a-98ae-11e5-b124-5820b106a87c:1-26487091:26487093-26655522
                    Auto_Position: 0
    1 row in set (0.00 sec)


    解析日志(主库操作):
    [root@dev-env-22 logs]# mysqlbinlog --base64-output=decode-rows -v --start-position=125560539 /home/mysql/binlog/binlog.000083>/tmp/bb.txt


    [root@dev-env-22 logs]# more /tmp/bb.txt
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
    /*!40019 SET @@session.max_insert_delayed_threads=0*/;
    /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
    DELIMITER /*!*/;
    # at 125560539
    #200707 18:30:51 server id 1  end_log_pos 125560587 CRC32 0x243015c5    GTID [commit=yes]
    SET @@SESSION.GTID_NEXT= 'c95fcd3a-98ae-11e5-b124-5820b106a87c:26655523'/*!*/;
    # at 125560587
    #200707 18:30:51 server id 1  end_log_pos 125560665 CRC32 0xac84d714    Query   thread_id=409830        exec_time=0     error_code=0
    SET TIMESTAMP=1594117851/*!*/;
    SET @@session.pseudo_thread_id=409830/*!*/;
    SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
    SET @@session.sql_mode=1075838976/*!*/;
    SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
    /*!C utf8mb4 *//*!*/;
    SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
    SET @@session.lc_time_names=0/*!*/;
    SET @@session.collation_database=DEFAULT/*!*/;
    BEGIN
    /*!*/;
    # at 125560665
    #200707 18:30:51 server id 1  end_log_pos 125560743 CRC32 0xe7758f1b    Table_map: `db_message`.`app_uid_dev_token` mapped to number 13563
    # at 125560743
    #200707 18:30:51 server id 1  end_log_pos 125560887 CRC32 0x53621834    Write_rows: table id 13563 flags: STMT_END_F
    ### INSERT INTO `db_message`.`app_uid_dev_token`
    ### SET
    ###   @1=508452
    ###   @2=2
    ###   @3='40532cbd7f185a99ebedcbdd94a7d8b1d1d4ab31730255cafae198cb244abb7e'
    ###   @4='1a1018970a2b899e6c7'
    ###   @5='6.0.0'
    ###   @6=1594117851
    # at 125560887
    #200707 18:30:51 server id 1  end_log_pos 125560966 CRC32 0x50183d32    Query   thread_id=409830        exec_time=0     error_code=0
    SET TIMESTAMP=1594117851/*!*/;

    原因是app_uid_dev_token存在主键为508452的记录(之前数据不一致导致),导致写入失败

    解决办法:

     在从库将重复的记录删除掉

    select * from db_message.app_uid_dev_token where user_id=508452

  • 相关阅读:
    标准化组织 相关术语
    c++大作业五子棋-需求分析与设计方案
    [转载] ZooKeeper简介
    [转载] Netty源码分析
    [转载] Netty教程
    [转载] Java NIO与IO
    [转载] Java NIO教程
    [转载] 文件锁(Filelock)与锁定映射文件部分内容
    [转载] Java集合框架之小结
    [转载] 运维角度浅谈:MySQL数据库优化
  • 原文地址:https://www.cnblogs.com/hxlasky/p/13262921.html
Copyright © 2011-2022 走看看