一台从库出现1032错误,那1032是什么错误,我们看一下

[root@BLAVDP021 ~]# perror 1032
MySQL error code 1032 (ER_KEY_NOT_FOUND): Can't find record in '%-.192s'

简单说,就是在从库上找不到相应的记录,同时在show slave status\G;中有相关输出,我们看一下:

Last_Errno: 1032
Last_Error: Could not execute Update_rows event on table lenovoweixin.wx_app_order_code; Can't find record in 'wx_app_order_code', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000129, end_log_pos 4448749

从上面可以看出,在slave执行从master复制过来的update语句因为slave找不到数据,导致SQL线程报错,停止应用。也就是说master和slave上数据不一致导致的该错误。

遇到这种情况,一般都是找出错误,然后修改slave上的数据,然后启动slave,继续应用。

show slave status中没有明确给出错误的语句,因此需要分析主库上binary log来查看是哪条语句

mysqlbinlog --no-defaults --base64-output=decode-rows -v -v /data/mysql/mysql_data/mysql-bin.000129 | grep -A 200 '4448749' > syk.txt

vim syk.txt
UPDATE `lenovoweixin`.`wx_app_order_code`
WHERE
  @1=1607124
  @2=67516889
  @3='https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQFe8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyRThoN2gzSU1hamUxczJmTzFwMVYAAgSClGlZAwSAOgkA'
  @4='201707144100080009'
  @5=NULL
  @6=0
  @7=2017-07-15 12:05:22
  @8=2017-07-15 12:05:22
  @9=NULL
SET
  @1=1607124
  @2=67516889
  @3='https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQFe8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyRThoN2gzSU1hamUxczJmTzFwMVYAAgSClGlZAwSAOgkA'
  @4='201707144100080009'
  @5='oLHCTju-hiinGjHg2Qog1Cis_Pgw'
  @6=1
  @7=2017-07-15 12:05:22
  @8=2017-07-15 12:05:22
  @9='fd9d079f-6323-473b-8f4a-d37273e2ac5c'

然后到从库中查询是否有此记录,在从库中查询不到,因此我们需要手工在从库上创建此记录如下:

insert into wx_app_order_code (id,scene_id,code_url,orderid,flag,create_time,update_time) 
values (1607124,67516889,'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQFe8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyRThoN2gzSU1hamUxczJmTzFwMVYAAgSClGlZAwSAOgkA','201707144100080009',0,'2017-07-15 12:05:22','2017-07-15 12:05:22');