Mysql 主从常遇问题

1、1032错误

此问题很常见,大多是由于主从延迟,例如主中的新增和删除操作连续同步到从库,但是从库的删除先进行了,那么此时就会报1032错误.常见的错误消息内容(来自https://www.cnblogs.com/langdashu/p/5920436.html)如下:

Slave_SQL_Running: NOLast_SQL_Errno: 1032
Last_SQL_Error: Worker 3 failed executing transaction '' at master log mysql-bin.000003, end_log_pos 440267874;
          Could not execute Delete_rows event on table db_test.tbuservcbgolog; Can't find record in 'tbuservcbgolog', Error_code: 1032;
          handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000003, end_log_pos 440267874

windows下的一种解决方式如下:

首先定位到mysqlbinlog.exe的运行目录,接着打开cmd执行以下语句

mysqlbinlog.exe --base64-output=decode-rows -vv "binlog文件的全路径" --stop-position=111(1032输出的错误消息中的end_log_pos) >11.txt(解析后的可读binlog文件生成路径)

11.txt文件生成后,打开git bash执行以下命令

grep -i -50 "1032输出的错误消息中的end_log_pos" 11.txt

查找具体的错误执行语句,结果大致如下:

### DELETE FROM `库`.`表`
### WHERE
### @1='812d198d-f1f5-4b12-9542-35b23aed0040' /* VARSTRING(144) meta=144 nullable=0 is_null=0 */
### @2='ae67acb3-93b2-4c7b-830d-9dd38c962ba1' /* VARSTRING(144) meta=144 nullable=1 is_null=0 */
### @3='c39ff2f5-ce7d-44c5-ad79-3d0c88fb82c7' /* VARSTRING(144) meta=144 nullable=1 is_null=0 */

接着根据delete语句反向insert数据,重启slave.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章