暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
mysqlbinlog 怎样解析出正常的sql语句?
8600
5页
13次
2020-06-28
5墨值下载
MySQL 运维中经常会解析 binlog 文件,来查看 MySQL 做了什么操作。
简单场景,一个研发同学执行了 delete from table where XXX and XX。这时候需要 dba
学来找回数据。此处找回我们就需要解析 mysql binlog 看看到底删除了什么,或者更新了什
么。
mysql 日志格式 ROW 模式,建议生产都用 ROW
解析工具:MySQLbinlog binlog2sql(美团开源工具,非常建议使用)
mysql 版本:8.0.19
一、mysqlbinlog 解析文件
解析之前需要查看 binlog 格式,默认情况下建议生产环境全部采用 ROW 格式
通过参数 binlog_format 参数的值,可以设置 binlog 的格式,可选值有
statementrowmixed
statement 格式:记录数据库执行的原始 SQL 语句
row 格式:记录具体的行的修改,这个为目前默认值
mixed 格式:因为上边两种格式各有优缺点,所以就出现了 mixed 格式
二、mysqlbinlog 语法解析
需要注意的是
# mysqlbinlog 的执行格式
mysqlbinlog [options] log_file ...
# 查看 bin-log 二进制文件(shell 方式)
mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003
# 查看 bin-log 二进制文件(带查询条件)
mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003 \
--start-datetime="2019-03-01 00:00:00" \
--stop-datetime="2019-03-10 00:00:00" \
--start-position="5000" \
--stop-position="20000"
疑问点一:如何解析出和客户端执行一致的 sql 语句?答案是可以的
1.数据库开启 binlog_rows_query_log_events=1 参数
2.mysqlbinlog -vv 参数 --base64-output=decode-rows 参数
--base64-output=decode-rows -vv 用这个参数解析 binlog 就可以看到 sql
3.sql 试例
mysqlbinlog --no-defaults -vv --base64-output=DECODE-ROWS --skip-gtids -d
demo binlog.000074 | grep -C 1 -i "Rows_query"
三、解析结果文件
of 5
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜