1. 程式人生 > >修復mysql slave復制1032錯誤

修復mysql slave復制1032錯誤

slave 1032

一臺從庫出現1032錯誤,那1032是什麽錯誤,我們看一下

[[email protected] ~]# 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‘);


本文出自 “剛剛出殼的小鳥” 博客,請務必保留此出處http://qhd2004.blog.51cto.com/629417/1948122

修復mysql slave復制1032錯誤