解析 MySQL Binlog 详细信息的命令
以下是解析 MySQL Binlog 详细信息的常用命令:
1. 基本 binlog 解析命令
# 查看 binlog 文件内容(基本格式)
mysqlbinlog /var/lib/mysql/mysql-bin.000001# 查看特定时间段的 binlog
mysqlbinlog --start-datetime="2025-08-23 00:00:00" --stop-datetime="2025-08-23 23:59:59" /var/lib/mysql/mysql-bin.000001# 查看特定位置的 binlog
mysqlbinlog --start-position=107 --stop-position=1000 /var/lib/mysql/mysql-bin.000001
2. 详细解析命令(带解码和格式化)
# 详细解析 binlog(解码 base64 并显示行事件)
mysqlbinlog --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000001# 解析并显示特定数据库的 binlog
mysqlbinlog --database=your_database_name -v /var/lib/mysql/mysql-bin.000001# 将结果输出到文件
mysqlbinlog --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000001 > binlog_analysis.txt
3. 高级解析命令
# 解析多个 binlog 文件
mysqlbinlog /var/lib/mysql/mysql-bin.000001 /var/lib/mysql/mysql-bin.000002# 解析并显示 SQL 语句(而不是行事件)
mysqlbinlog --base64-output=DECODE-ROWS -v --verbose /var/lib/mysql/mysql-bin.000001# 解析并排除特定数据库
mysqlbinlog --exclude-databases=mysql,sys -v /var/lib/mysql/mysql-bin.000001
4. 远程服务器 binlog 解析
# 从远程服务器读取 binlog
mysqlbinlog --read-from-remote-server --host=your_mysql_host --user=username --password /path/to/binlog/mysql-bin.000001
5. 使用管道进行进一步处理
# 解析并过滤特定表
mysqlbinlog --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000001 | grep -A 10 -B 2 "your_table_name"# 解析并统计操作类型
mysqlbinlog --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000001 | grep "### " | awk '{print $2}' | sort | uniq -c
6. 生成可执行的 SQL 文件
# 将 binlog 转换为 SQL 文件
mysqlbinlog --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000001 > binlog_replay.sql# 或者直接生成可执行 SQL(不包含行事件解码)
mysqlbinlog /var/lib/mysql/mysql-bin.000001 > binlog_replay.sql