处理mysql gtid模式下主从同步案例一则---主从数据不一致


问题描述:
 有个网友在QQ群中问到:
GTID模式执行执行以下语句时从库出错,binlog_format=ROW
主库执行delete from mysql.user where password='';

root@localhost:mysqlbost3376.sock((none)) mysql> select user,host,password from mysql.user;
+------+--------------+-------------------------------------------+
| user | host         | password                                  |
+------+--------------+-------------------------------------------+
| root | localhost    | *56033C33EE1C4388FE7520ssBFFA0AB1A9040EFC|
| bak  | 192.168.17.3 | *2DB8F616A9DE1849577ss0B5EA50BD86E3533E0F |
+------+--------------+-------------------------------------------+
2 rows in set (0.00 sec)

从库复制出现以下错误
root@localhost:mysqlbost3376.sock((none)) mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.17.2
                  Master_User: bak
                  Master_Port: 3376
                Connect_Retry: 60
              Master_Log_File: mysql3376-bin.000003
          Read_Master_Log_Pos: 1605
               Relay_Log_File: HZ_MYSQL_173-relay-bin.000002
                Relay_Log_Pos: 942
        Relay_Master_Log_File: mysql3376-bin.000003
             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 mysql3376-bin.000003, end_log_pos 1536
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 724
              Relay_Log_Space: 2034
              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 mysql3376-bin.000003, end_log_pos 1536
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 7601
                  Master_UUID: 67baa19f-0aab-11e6-986e-141877594be2
             Master_Info_File: /data/mysql/bost3376/bost3376data/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: 160425 14:15:58
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set: 67baa19f-0aab-11e6-986e-141877594be2:1-4
            Executed_Gtid_Set: 67baa19f-0aab-11e6-986e-141877594be2:1-3,6ddb6921-0aab-11e6-986f-141877584236:1
                Auto_Position: 1
1 row in set (0.00 sec)

ERROR:
No query specified

从库user表内容如下:
root@localhost:mysqlbost3376.sock((none)) mysql> select user,host,password from mysql.user;
+------+----------------+-------------------------------------------+
| user | host           | password                                  |
+------+----------------+-------------------------------------------+
| root | localhost      | *56033C33EE1C4388FE7520BdddFFA0AB1A9040EFC |
| root | hz\_mysql\_173 |                                           |
| root | 127.0.0.1      |                                           |
| root | ::1            |                                           |
|      | localhost      |                                           |
|      | hz\_mysql\_173 |                                           |
| bak  | 192.168.17.3   | *2DB8F616A9DE18495770Bddd5EA50BD86E3533E0F |
+------+----------------+-------------------------------------------+
7 rows in set (0.00 sec)

从以上可以看到从库数据没有被删除。

问题分析:
  从库的SQL线程报错: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 mysql3376-bin.000003, end_log_pos 1536,先是猜测很大可能是因为主库和从库的user表中password为空的数据不同。由于主库的数据删除,只能请网友提供主库的

binlog日志解析,如下:

主库binlog日志:
# at 840
#160425 14:15:58 server id 7601  end_log_pos 1009 CRC32 0x2ae165ac      Table_map: `mysql`.`user` mapped to number 1
# at 1009
#160425 14:15:58 server id 7601  end_log_pos 1536 CRC32 0x7ee67deb      Delete_rows: table id 1 flags: STMT_END_F
### DELETE FROM `mysql`.`user`
### WHERE
###   @1='hz\_mysql\_172' /* STRING(180) meta=65204 nullable=0 is_null=0 */
###   @2='root' /* STRING(48) meta=65072 nullable=0 is_null=0 */
###   @3='' /* STRING(41) meta=65065 nullable=0 is_null=0 */
###   @4=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @5=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @6=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @7=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @8=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @9=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @10=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @11=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @12=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @13=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @14=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @15=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @16=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @17=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @18=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @19=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @20=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @21=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @22=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @23=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @24=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @25=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @26=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @27=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @28=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @29=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @30=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @31=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @32=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @33=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @34='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @35='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @36='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @37=0 /* INT meta=0 nullable=0 is_null=0 */
###   @38=0 /* INT meta=0 nullable=0 is_null=0 */
###   @39=0 /* INT meta=0 nullable=0 is_null=0 */
###   @40=0 /* INT meta=0 nullable=0 is_null=0 */
###   @41='mysql_native_password' /* STRING(192) meta=65216 nullable=1 is_null=0 */
###   @42='' /* BLOB/TEXT meta=2 nullable=1 is_null=0 */
###   @43=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
### DELETE FROM `mysql`.`user`
### WHERE
###   @1='127.0.0.1' /* STRING(180) meta=65204 nullable=0 is_null=0 */
###   @2='root' /* STRING(48) meta=65072 nullable=0 is_null=0 */
###   @3='' /* STRING(41) meta=65065 nullable=0 is_null=0 */
###   @4=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @5=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @6=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @7=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @8=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @9=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @10=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @11=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @12=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @13=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @14=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @15=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @16=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @17=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @18=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @19=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @20=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @21=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @22=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @23=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @24=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @25=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @26=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @27=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @28=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @29=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @30=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @31=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @32=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @33=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @34='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @35='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @36='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @37=0 /* INT meta=0 nullable=0 is_null=0 */
###   @38=0 /* INT meta=0 nullable=0 is_null=0 */
###   @39=0 /* INT meta=0 nullable=0 is_null=0 */
###   @40=0 /* INT meta=0 nullable=0 is_null=0 */
###   @41='mysql_native_password' /* STRING(192) meta=65216 nullable=1 is_null=0 */
###   @42='' /* BLOB/TEXT meta=2 nullable=1 is_null=0 */
###   @43=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
### DELETE FROM `mysql`.`user`
### WHERE
###   @1='::1' /* STRING(180) meta=65204 nullable=0 is_null=0 */
###   @2='root' /* STRING(48) meta=65072 nullable=0 is_null=0 */
###   @3='' /* STRING(41) meta=65065 nullable=0 is_null=0 */
###   @4=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @5=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @6=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @7=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @8=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @9=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @10=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @11=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @12=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @13=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @14=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @15=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @16=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @17=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @18=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @19=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @20=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @21=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @22=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @23=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @24=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @25=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @26=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @27=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @28=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @29=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @30=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @31=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @32=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @33=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @34='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @35='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @36='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @37=0 /* INT meta=0 nullable=0 is_null=0 */
###   @38=0 /* INT meta=0 nullable=0 is_null=0 */
###   @39=0 /* INT meta=0 nullable=0 is_null=0 */
###   @40=0 /* INT meta=0 nullable=0 is_null=0 */
###   @41='mysql_native_password' /* STRING(192) meta=65216 nullable=1 is_null=0 */
###   @42='' /* BLOB/TEXT meta=2 nullable=1 is_null=0 */
###   @43=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
### DELETE FROM `mysql`.`user`
### WHERE
###   @1='localhost' /* STRING(180) meta=65204 nullable=0 is_null=0 */
###   @2='' /* STRING(48) meta=65072 nullable=0 is_null=0 */
###   @3='' /* STRING(41) meta=65065 nullable=0 is_null=0 */
###   @4=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @5=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @6=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @7=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @8=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @9=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @10=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @11=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @12=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @13=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @14=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @15=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @16=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @17=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @18=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @19=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @20=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @21=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @22=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @23=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @24=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @25=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @26=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @27=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @28=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @29=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @30=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @31=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @32=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @33=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @34='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @35='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @36='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @37=0 /* INT meta=0 nullable=0 is_null=0 */
###   @38=0 /* INT meta=0 nullable=0 is_null=0 */
###   @39=0 /* INT meta=0 nullable=0 is_null=0 */
###   @40=0 /* INT meta=0 nullable=0 is_null=0 */
###   @41='mysql_native_password' /* STRING(192) meta=65216 nullable=1 is_null=0 */
###   @42=NULL /* STRING(192) meta=2 nullable=1 is_null=1 */
###   @43=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
### DELETE FROM `mysql`.`user`
### WHERE
###   @1='hz\_mysql\_172' /* STRING(180) meta=65204 nullable=0 is_null=0 */
###   @2='' /* STRING(48) meta=65072 nullable=0 is_null=0 */
###   @3='' /* STRING(41) meta=65065 nullable=0 is_null=0 */
###   @4=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @5=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @6=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @7=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @8=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @9=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @10=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @11=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @12=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @13=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @14=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @15=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @16=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @17=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @18=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @19=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @20=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @21=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @22=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @23=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @24=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @25=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @26=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @27=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @28=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @29=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @30=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @31=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @32=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @33=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
###   @34='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @35='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @36='' /* BLOB/TEXT meta=2 nullable=0 is_null=0 */
###   @37=0 /* INT meta=0 nullable=0 is_null=0 */
###   @38=0 /* INT meta=0 nullable=0 is_null=0 */
###   @39=0 /* INT meta=0 nullable=0 is_null=0 */
###   @40=0 /* INT meta=0 nullable=0 is_null=0 */
###   @41='mysql_native_password' /* STRING(192) meta=65216 nullable=1 is_null=0 */
###   @42=NULL /* STRING(192) meta=2 nullable=1 is_null=1 */
###   @43=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
# at 1536
#160425 14:15:58 server id 7601  end_log_pos 1605 CRC32 0xd39bc7e4      Query   thread_id=5     exec_time=0     error_code=0
SET TIMESTAMP=1461564958/*!*/;
COMMIT

上面看到主库共删除了5条符合条件的记录,其中(以上标红色部分)@1='hz\_mysql\_172'的两条被删除的记录,与从库中查询user表内容的两条记录hz\_mysql\_173不一致,是引起报错的原

因。


问题解决:

Retrieved_Gtid_Set项:记录了relay日志从Master获取了binlog日志的位置

Executed_Gtid_Set项:记录本机执行的binlog日志位置(如果是从机,包括Master的binlog日志位置和slave本身的binlog日志位置)

此案例中,slave的相关值如下:
Retrieved_Gtid_Set: 67baa19f-0aab-11e6-986e-141877594be2:1-4
Executed_Gtid_Set: 67baa19f-0aab-11e6-986e-141877594be2:1-3,6ddb6921-0aab-11e6-986f-141877584236:1

在从库上操作:
stop slave;
set gtid_next='67baa19f-0aab-11e6-986e-141877594be2:1-4';
begin;commit;
set gtid_next="AUTOMATIC";
start slave;

然后再查看show slave status\G


QQ记录如下:  

hz\_mysql\_173
杭州 14:52:44
这个应该是和ROW格式有关   为什么不支持这种写法  不是很清楚   望各位指点
佛山 15:01:01
应该不是不支持,是本身两边的数据库不一致吧
佛山 15:01:18
主库在删除前,有没有比较两边的数据是否相同
杭州15:02:03
一致
佛山15:02:46
这个报错就是从库数据不一致,SQL thread中断报错
佛山15:03:46
分析一下主库的binlog,看delete操作,操作了哪些记录
佛山15:03:56
然后与从库的记录比较一下
杭州15:06:13
是不是因为这个hz\_mysql\_172  主机名不一样
### DELETE FROM `mysql`.`user`
### WHERE
###   @1='hz\_mysql\_172' /* STRING(180) meta=65204 nullable=0 is_null=0 */
杭州15:06:26
一个是172  一个是173
杭州15:09:57
主库是已经被我删除了
佛山15:11:28
能不能将完整的binlog中的delete日志发下

杭州15:13:23
难道是要主从所有的列值都一致从库才能删除
佛山 15:14:32
是的
佛山 15:14:38
要数据一致
佛山15:15:00
主库是172,从库是173
佛山15:15:05
值 不同
杭州15:15:47
行  谢谢啊  
佛山15:15:50
杭州 15:33:55
已解决  谢谢
佛山15:35:40
不用客气

 

你可能感兴趣的:(mysql复制)