查看mysql执行日志

最近遇到了一个很奇怪的事,某个服务线上环境中有一张表的用户记录感觉很异常,于是只好通过翻各种日志来破案,这里将mysql的log_bin日志的查询过程大致描述一下。

MySQL binlog 文件是 MySQL 数据库管理系统内部的一种二进制日志文件。

如何查看 MySQL Binlog 文件
查看 MySQL binlog 文件,需要用到 MySQL 提供的 binlog 工具。可以使用以下命令查看当前数据库服务器的 binlog 文件:

mysqlbinlog --help

可以使用以下命令查看指定 binlog 文件的内容:

mysqlbinlog binlog.000001 > binlog.sql

此命令会将 binlog.000001 文件转储到 binlog.sql 文件,并可以使用文本编辑器等工具查看该文件。

 

Linux下使用mysqlbinlog工具报错(-bash: mysqlbinlog: command not found)

一般我们的mysqlbinlog和mysql安装在同一路径,例如我的 mysql路径就是:/www/server/mysql/bin/mysql

cd /usr/local/bin
命令解释:进入到要映射命令的文件夹
ln -s /www/server/mysql/bin/mysqlbinlog mysqlbinlog
命令解释: 把mysqlbinlog安装目录/www/server/mysql/bin/mysqlbinlog 映射到/usr/local/bin目录下,/www/server/mysql/bin/mysqlbinlog 这个路径一定要是你自己的mysqlbinlog安装路径哦,不要直接复制

或者直接指定目录

/www/server/mysql/bin/mysqlbinlog binlog.000001 > binlog.sql

 

在mysql-bin.010001中找到关键字

比如我要在mysql-bin.010001中找到delete操作,那么就可以用shell命令:

mysqlbinlog -v ../logs/logbin/mysql-bin.010001 | grep -i delete

其中 -i 表示忽略大小写
由于delete操作十分的多,我还想精确到删除某一张表,那我就可以改写命令:

mysqlbinlog -v ../logs/logbin/mysql-bin.010001 | grep -i 'delete from tableName'

我还想找到delete删除操作的前后几行,比如前三行,后十行,那么我的命令就会变成:

mysqlbinlog -v ../logs/logbin/mysql-bin.010001 | grep -i -A 10 -B 3 'delete from tableName'

还有我的查询条件中包含特殊字符:

mysqlbinlog -v ../logs/logbin/mysql-bin.010001 | grep -i -A 10 -B 3 "insert into tableName (`id`"

给TA打赏
共{{data.count}}人
人已打赏
技术教程

vscode ftp连接远程文档、编辑并保存

2023-7-10 14:10:09

技术教程

nvm 一个nodejs版本管理工具

2023-7-15 11:25:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索