420 字
2 分钟
MySQL Binlog 是什么,和 Redo Log 有什么区别
Binary Log(Binlog)是 MySQL Server 层记录数据库变更事件的日志,可用于复制和时间点恢复。它支持语句、行以及混合记录格式;ROW 格式记录行变更事件,适合避免语句在副本上因环境差异产生不同结果,但日志量可能更大。Binlog 不是 InnoDB 专属日志,启用和保留策略需结合实例用途配置。
Redo Log 属于 InnoDB,采用循环空间,重点是让引擎在崩溃后恢复数据页;Binlog 是追加的逻辑事件日志,通常按文件和位置持续增长,供复制和备份恢复使用。二者不是重复副本:故障恢复、时间点恢复和副本追赶分别依赖不同信息,不能互相替代。
生产配置要规划 Binlog 保留期限、磁盘容量和备份归档;清理过早会破坏副本追赶或时间点恢复链。应通过 SHOW BINARY LOGS 查看日志文件,通过 SHOW MASTER STATUS(不同版本命名可能不同)查看当前写入位置;MySQL 8.0.26 起提供 SHOW BINARY LOG STATUS 作为新名称。具体命令需按目标版本核对。
追问
- Binlog 能单独让 InnoDB 崩溃恢复吗? 不能替代 InnoDB Redo Log;完整恢复通常需要备份、引擎恢复日志及相应 Binlog。
- ROW 格式是否一定更好? 它能准确表达行变化,但可能产生更大日志;要考虑下游和存储成本。
- Binlog 清理为何影响主从? 副本若尚未读取被删除的日志,就无法继续从该主库追赶,通常需要重新准备副本。
MySQL Binlog 是什么,和 Redo Log 有什么区别
https://blog.xqcherry.top/posts/interview/mysql/binlog/ 目录