mysql8: 主从复制从库报错时,找到主库上的sql

一,从库机器上: 从库mysql日志中的报错信息给出了日志文件名和end_log_pos

2024-10-12T09:41:23.761203Z 414 [ERROR] [MY-013146] [Repl] Replica SQL for channel '': 
Worker 1 failed executing transaction 'ANONYMOUS' at source log mysql-master-bin.000002, 
end_log_pos 207422537; 
Column 5 of table 'mybase.user' cannot be converted from type 'smallint' to type 'tinyint(1)', 
Error_code: MY-013146

二,主库机器上:找到发生问题时的时间:

[root@web ~]# mysqlbinlog --start-position=207422537 /data/lib/mysql/mysql-master-bin.000002 | more

内容格式如下:

# at 207422537
#241012 17:41:23 server id 1  end_log_pos 207422568 CRC32 0xa8385d11    Xid = 1586253
COMMIT/*!*/;

可以看到时间:241012 17:41:23

 三,主库机器上:获取指定时间内的日志

mysqlbinlog --start-datetime="2024-10-12 17:40:00" --stop-datetime="2024-10-12 17:45:00" 
            --database=mybase --base64-output=decode-rows -v /data/lib/mysql/mysql-master-bin.000002
            > /home/ali/10121740.txt

 从导出的文件中可以查到发生问题时的sql
注意:  需要加此两个参数:
      --base64-output=decode-rows -v
      -v: 负责把具体的sql显示出来

  • -vv:查看具体SQL语句及备注。

  • -v:查看具体SQL语句。
  • --base64-output=decode-rows:解析Binlog日志文件

 

posted @ 2024-10-14 14:43  刘宏缔的架构森林  阅读(57)  评论(0编辑  收藏  举报