MySQL binlog解析命令说明
·
概述
今天发现某个MySQL数据库,磁盘空间增长非常迅速。观察了一下,发现binlog在疯狂增长。估计又是谁狂写数据库了。
现象
ll binlog.00025*
-rw-r----- 1 mysql mysql 1073883804 6月 3 07:45 binlog.000250
-rw-r----- 1 mysql mysql 1073904262 6月 3 07:51 binlog.000251
-rw-r----- 1 mysql mysql 1073867113 6月 3 07:57 binlog.000252
-rw-r----- 1 mysql mysql 1073826263 6月 3 08:01 binlog.000253
-rw-r----- 1 mysql mysql 1074181517 6月 3 08:04 binlog.000254
-rw-r----- 1 mysql mysql 1073775421 6月 3 08:08 binlog.000255
-rw-r----- 1 mysql mysql 1073898674 6月 3 08:12 binlog.000256
-rw-r----- 1 mysql mysql 1073779116 6月 3 08:16 binlog.000257
-rw-r----- 1 mysql mysql 1073776540 6月 3 08:21 binlog.000258
-rw-r----- 1 mysql mysql 1073896248 6月 3 08:30 binlog.00025
排查
-
查看 2026年6月3日 08:00:00 至 08:30:00 之间的日志,看看到底都写了什么
| 文件名 | 时间 |
|--------|------|
| binlog.000253 | 08:01 |
| binlog.000254 | 08:04 |
| binlog.000255 | 08:08 |
| binlog.000256 | 08:12 |
| binlog.000257 | 08:16 |
| binlog.000258 | 08:21 |
| binlog.000259 | 08:30 | -
解析binlog
mysqlbinlog \
--start-datetime="2026-06-03 08:00:00" \
--stop-datetime="2026-06-03 08:30:00" \
--base64-output=decode-rows \
-vv \
binlog.00025[3-9] \
> /tmp/binlog_0800_0830.sql
- 添加时区显示
- Mysql时区设置是依赖系统
mysql> SHOW VARIABLES LIKE 'time_zone';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| time_zone | SYSTEM |
+---------------+--------+
1 row in set (0.00 sec)
- 系统显示是东八区
[root@logs]# timedatectl | grep "Time zone"
Time zone: Asia/Shanghai (CST, +0800)
[root@logs]#
- 添加时区设置,然后解析binlog
TZ='Asia/Shanghai' mysqlbinlog \
--start-datetime="2026-06-03 08:00:00" \
--stop-datetime="2026-06-03 08:30:00" \
--base64-output=decode-rows \
-vv \
binlog.000253 binlog.000254 binlog.000255 binlog.000256 binlog.000257 binlog.000258 binlog.000259 \
> /tmp/binlog_0800_0830.sql
统计
根据解析的sql文件,进行统计
grep -E "(INSERT|UPDATE|DELETE)" ./binlog_0800_0830.sql | sort | uniq -c | sort -rn
- sort 排序
- uniq -c 统计
- sort -rn 数值降序
更多推荐

所有评论(0)