MySQL二进制日志需用mysqlbinlog工具查看,先确认log_bin为ON,通过SHOW BINARY LOGS查看日志文件,再用mysqlbinlog解析指定文件,支持按时间或位置筛选,常用于数据恢复与主从复制。

MySQL的二进制日志(Binary Log)记录了所有对数据库的更改操作,比如INSERT、UPDATE、DELETE等,主要用于数据恢复、主从复制等场景。要查看二进制日志内容,不能直接用文本编辑器打开,因为它是二进制格式。但可以通过MySQL提供的命令行工具 mysqlbinlog 来解析和查看。
1. 确认二进制日志是否开启
在查看之前,先确认MySQL是否启用了二进制日志:
SHOW VARIABLES LIKE 'log_bin';
如果返回值为 ON,说明已启用。同时可以查看日志文件的位置和名称:
SHOW VARIABLES LIKE 'log_bin_basename';
这会显示二进制日志的路径和基础名,通常形如 /var/lib/mysql/mysql-bin.000001。
2. 使用 mysqlbinlog 命令查看日志内容
在操作系统命令行中使用 mysqlbinlog 工具来读取和解析二进制日志文件。
基本语法:
mysqlbinlog [选项] 日志文件名
例如:
mysqlbinlog /var/lib/mysql/mysql-bin.000001
这会将整个日志内容输出到终端,包含时间戳、事件类型、SQL语句等信息。
常用选项:
-
--start-datetime:指定开始时间,例如
--start-datetime="2025-04-01 10:00:00" - --stop-datetime:指定结束时间
- --start-position:从指定位置开始(POS值可在日志中看到)
- --stop-position:到指定位置结束
- --base64-output=DECODE-ROWS:用于查看基于行的复制日志时解码
- -v 或 -vv:详细模式,-vv 可显示更完整的SQL语句
示例:查看某时间段内的操作
mysqlbinlog --start-datetime="2025-04-01 09:00:00" \
--stop-datetime="2025-04-01 11:00:00" \
/var/lib/mysql/mysql-bin.000001
3. 查看当前正在使用的二进制日志
在MySQL内部,可以查看当前有哪些二进制日志文件:
SHOW BINARY LOGS;
或者查看当前正在写入的是哪个文件:
SHOW MASTER STATUS;
4. 实际应用场景举例
假设你误删了一张表,想通过二进制日志恢复数据:
- 先用 mysqlbinlog 找到删除操作前的POS位置
- 导出该位置之前的所有SQL:
mysqlbinlog --stop-position=123456 mysql-bin.000001 > recovery.sql
- 然后导入该SQL文件进行恢复:
mysql -u root -p < recovery.sql
基本上就这些。只要掌握了 mysqlbinlog 的使用方法,就能灵活查看和利用MySQL的二进制日志。注意权限问题,执行该命令需要有相应的文件读取权限和MySQL权限。










