背景
最近在研究的一个遗留项目的过程中,为了确定进行某个业务操作究竟修改了哪些数据库表,我们决定查看binlog中记录的sql语句。一直知道MySQL的binlog解析工具很多,但是原来没有用过,今天把这个过程记录一下。
这一次我们除了使用官方提供的解析工具之外,还使用了一个第三方的开源工具。
准备工作
启用binlog
首先要确定MySQL服务器启用了binlog,这个是在my.cnf文件中进行配置的。
cat /etc/my.cnf
# 取消log_bin的注释即可,这里可以提供一个具体的路径,否则就使用默认地址
log_bin
# 高版本MySQL需要server-id这个参数,提供一个集群中不重复的id值即可
server-id=1
复制代码
# 重新启动服务器
service mysqld restart
复制代码
记录当前log位置
为了方便后续测试,我们先记录下MySQL日志的一些相关信息。
-- 确认日志已经正确启用,这里也可以查看日志文件的具体路径
mysql> show variables like '%log_bin%';
+---------------------------------+---------------------------------+
| Variable_name | Value |
+---------------------------------+---------------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/mysqld-bin |
| log_bin_index | /var/lib/mysql/mysqld-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+---------------------------------+