zoukankan      html  css  js  c++  java
  • MySQL Last_SQL_Errno: 1062----经典错误,主键冲突

    一、基础信息

    1. Centos7.4

    2.MySQL 5.7.21

    3.基于gtid的复制

    二、异常描述

    误把从节点当成主节点插入一条数据,同一条数据在主、从节点插入都进行了一次插入操作,导致主键冲突,slave下的SQL线程异常。

    建议设置从库为只读:

    set global read_only=1;--针对普通MySQL数据库用户设置为只读
    set global super_read_only=1;--针对super类MySQL数据库用户设置为只读,比如root用户

    my.cnf 文件设置永久只读

    read_only=1
    super_read_only=1;

    三、处理过程  

    1.查看报错信息-- 报错大致如下

    mysql> show slave status G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.1.1
                      Master_User: repuser
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql_binlog.000023
              Read_Master_Log_Pos: 2266930
                   Relay_Log_File: devmidsrv01kf-relay-bin.000003
                    Relay_Log_Pos: 423
            Relay_Master_Log_File: mysql_binlog.000016
                 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 testdb1.students; Duplicate entry '8' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql_binlog.000016, end_log_pos 340380520
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 340380190
                  Relay_Log_Space: 6541566399
                  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 testdb1.students; Duplicate entry '8' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql_binlog.000016, end_log_pos 340380520
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 757
                      Master_UUID: 7bd36140-a92d-11e9-ba1f-005056a4099b
                 Master_Info_File: /data/mysql/3306/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: 191205 16:19:02
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 7bd36140-a92d-11e9-ba1f-005056a4099b:835084-2324874
                Executed_Gtid_Set: 7bd36140-a92d-11e9-ba1f-005056a4099b:1-835083,
    bcad977d-a934-11e9-a589-005056a483f4:1-29
                    Auto_Position: 1
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Master_TLS_Version: 
    1 row in set (0.00 sec)

    2.确认需要跳过的gtid是关键

    找到这个已经执行的gtid,加1

    7bd36140-a92d-11e9-ba1f-005056a4099b:1-835083

    3.跳过gtid

    stop slave;

    SET @@SESSION.GTID_NEXT= '7bd36140-a92d-11e9-ba1f-005056a4099b:1-835084';

    BEGIN; COMMIT;

    SET SESSION GTID_NEXT = AUTOMATIC;

    START SLAVE;

    4、检查

    mysql> show slave status G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.1.1
                      Master_User: repuser
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql_binlog.000023
              Read_Master_Log_Pos: 2266930
                   Relay_Log_File: devmidsrv01kf-relay-bin.000003
                    Relay_Log_Pos: 423
            Relay_Master_Log_File: mysql_binlog.000016
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes

  • 相关阅读:
    将博客搬至CSDN
    JDBC
    Java刷题常用API
    Java的反射机制
    Java的IO流
    Docker原理:Cgroup
    Docker原理:Namespace
    Anaconda软件安装使用问题
    初步了解Unix系统的I/O模式
    深入理解索引和AVL树、B-树、B+树的关系
  • 原文地址:https://www.cnblogs.com/small-wei/p/11990402.html
Copyright © 2011-2022 走看看