读取 MySQL 二进制日志
mysqlbinlog 把二进制日志(binlog)解析成可读 SQL 或行事件,常用于按时间点恢复、审计和排查主从问题。它只读日志文件,不连接数据库。
mysqlbinlog mysql-bin.000001
mysqlbinlog --start-datetime='2026-10-18 09:00:00' --stop-datetime='2026-10-18 10:00:00' mysql-bin.000001
mysqlbinlog --start-position=1234 --stop-position=5678 mysql-bin.000001
mysqlbinlog -v --base64-output=DECODE-ROWS mysql-bin.000001
mysqlbinlog --database=appdb mysql-bin.000001 > appdb.sql
mysqlbinlog --read-from-remote-server -h db -u repl -p mysql-bin.000001
ROW 格式下事件默认是 base64;加 -v --base64-output=DECODE-ROWS 才能看清行变更。--start-position 和 --stop-position 是文件内偏移,不跨文件通用。--database 只过滤事件,不保证语句在目标库完整可执行。gtid_purged 和 GTID 集合,不能只看 position。CREATE ... SELECT 等特殊语句;回放前先 dry-run。sudo 读取时注意输出文件权限。mysqlbinlog 版本最好与服务器一致;跨大版本解析可能失败。mysqldump — 逻辑备份mysql — 执行回放 SQLmysqladmin — 查看 binlog 状态