gtid 1032错误案例

gtid 1032错误案例

大致背景:

  分别在主从上删除了系统冗余账号。

mysql> delete from mysql.user where host='::1';
Query OK, 1 row affected (0.01 sec)

mysql> select user,host from mysql.user where host="::1";
Empty set (0.00 sec)

mysql> delete from mysql.user where host='dba\_test\_001';
Query OK, 1 row affected (0.00 sec)

mysql> select user,host from mysql.user where host="::1";

然后就顺利的模拟出了下面的故障。

 

[root@dba_test_002 ~]# cat error.txt
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.10.50.60
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000021
          Read_Master_Log_Pos: 1761
               Relay_Log_File: relay-bin.000051
                Relay_Log_Pos: 401
        Relay_Master_Log_File: mysql-bin.000021
             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: 1032
                   Last_Error: Could not execute Delete_rows event on table mysql.user; Can't find record in 'user', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000021, end_log_pos 707
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 191
              Relay_Log_Space: 90227450
              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: 1032
               Last_SQL_Error: Could not execute Delete_rows event on table mysql.user; Can't find record in 'user', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000021, end_log_pos 707
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1574144089
                  Master_UUID: 0501f340-0a94-11ea-ad2b-5254007dcbb3
             Master_Info_File: mysql.slave_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: 191204 16:11:25
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set: 0501f340-0a94-11ea-ad2b-5254007dcbb3:10-5440870
            Executed_Gtid_Set: 0501f340-0a94-11ea-ad2b-5254007dcbb3:1-5440867,
137347eb-0a94-11ea-ad2b-525400dd43f8:1-531071
                Auto_Position: 0
1 row in set (0.00 sec)

ERROR:
No query specified

mysql>

# 检查主库的日志
 /data/mysql/percona_server/bin/mysqlbinlog -vvv --base64-output-decode=rows  --stop-position=707 mysql-bin.000021 >21.binlog
/data/mysql/percona_server/bin/mysqlbinlog: unknown variable 'default-character-set=utf8mb4'

     两个方法可以解决这个问题

一是在MySQL的配置/etc/my.cnf中将default-character-set=utf8 修改为 character-set-server = utf8,但是这需要重启MySQL服务,如果你的MySQL服务正在忙,

那这样的代价会比较大。

二是用mysqlbinlog --no-defaults mysql-bin.000004 命令打开


  /data/mysql/percona_server/bin/mysqlbinlog --no-defaults -vvv --base64-output=decode-rows  --stop-position=707 mysql-bin.000021 >21.binlog 
 
# 在解析出来的日志中
SET @@SESSION.GTID_NEXT= '0501f340-0a94-11ea-ad2b-5254007dcbb3:5440868'/*!*/;
# at 239
#191204 15:54:44 server id 1574144089  end_log_pos 307 CRC32 0x9a232d9b         Query   thread_id=1     exec_time=0     error_code=0
SET TIMESTAMP=1575446084/*!*/;
SET @@session.pseudo_thread_id=1/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1073741824/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=224,@@session.collation_connection=224,@@session.collation_server=224/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 307
#191204 15:54:44 server id 1574144089  end_log_pos 476 CRC32 0x226b252a         Table_map: `mysql`.`user` mapped to number 1
# at 476
#191204 15:54:44 server id 1574144089  end_log_pos 707 CRC32 0x5f556bfd         Delete_rows: table id 1 flags: STMT_END_F

SET GTID_NEXT='0501f340-0a94-11ea-ad2b-5254007dcbb3:5440868'; 

-- 这里的''中的值,不好确定,所以从主库日志中查看,经过验证,是正常的。笔者第一次,还错误的写成了'0501f340-0a94-11ea-ad2b-5254007dcbb3:5440870'

BEGIN;COMMIT;
SET GTID_NEXT='AUTOMATIC';
START SLAVE;
show slave status\G;

# 再次出现异常
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.10.50.60
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000021
          Read_Master_Log_Pos: 1761
               Relay_Log_File: relay-bin.000051
                Relay_Log_Pos: 986
        Relay_Master_Log_File: mysql-bin.000021
             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: 1032
                   Last_Error: Could not execute Delete_rows event on table mysql.user; Can't find record in 'user', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000021, end_log_pos 1194
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 776
              Relay_Log_Space: 90227450
              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: 1032
               Last_SQL_Error: Could not execute Delete_rows event on table mysql.user; Can't find record in 'user', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000021, end_log_pos 1194
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1574144089
                  Master_UUID: 0501f340-0a94-11ea-ad2b-5254007dcbb3
             Master_Info_File: mysql.slave_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: 191204 16:40:29
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set: 0501f340-0a94-11ea-ad2b-5254007dcbb3:10-5440870
            Executed_Gtid_Set: 0501f340-0a94-11ea-ad2b-5254007dcbb3:1-5440868:5440870,
137347eb-0a94-11ea-ad2b-525400dd43f8:1-531071
                Auto_Position: 0
1 row in set (0.00 sec)

ERROR:
No query specified

#在日志中找到所需信息
SET @@SESSION.GTID_NEXT= '0501f340-0a94-11ea-ad2b-5254007dcbb3:5440869'/*!*/;
# at 824
#191204 15:55:17 server id 1574144089  end_log_pos 892 CRC32 0x8a128fdd         Query   thread_id=1     exec_time=0     error_code=0
SET TIMESTAMP=1575446117/*!*/;
BEGIN
/*!*/;
# at 892
#191204 15:55:17 server id 1574144089  end_log_pos 1061 CRC32 0x3fe67eeb        Table_map: `mysql`.`user` mapped to number 1
# at 1061
#191204 15:55:17 server id 1574144089  end_log_pos 1194 CRC32 0x1fbd26d1        Delete_rows: table id 1 flags: STMT_END_F


SET GTID_NEXT='0501f340-0a94-11ea-ad2b-5254007dcbb3:5440869';
BEGIN;COMMIT;
SET GTID_NEXT='AUTOMATIC';
START SLAVE;
show slave status\G;


mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.10.50.60
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000021
          Read_Master_Log_Pos: 1761
               Relay_Log_File: relay-bin.000051
                Relay_Log_Pos: 1971
        Relay_Master_Log_File: mysql-bin.000021
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 1761
              Relay_Log_Space: 90227450
              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: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1574144089
                  Master_UUID: 0501f340-0a94-11ea-ad2b-5254007dcbb3
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set: 0501f340-0a94-11ea-ad2b-5254007dcbb3:10-5440870
            Executed_Gtid_Set: 0501f340-0a94-11ea-ad2b-5254007dcbb3:1-5440870,
137347eb-0a94-11ea-ad2b-525400dd43f8:1-531071
                Auto_Position: 0
1 row in set (0.00 sec)

[root@dba_test_002 ~]#

重于正常同步了!

posted @ 2019-12-04 16:50  davie2020  阅读(901)  评论(0编辑  收藏  举报