Photo by Lorem Ipsum
731 words
4 minutes
SQL 系列(八):事务日志与备份恢复
SQL 教程
Posts in this series (10)AI 智能总结
数据库 8 事务日志与备份恢复
日志是数据库崩溃恢复基石,备份是数据容灾核心。三类数据库日志命名、备份手段存在明显差异,本文梳理重做日志、归档日志概念,区分冷备、热备、逻辑备份适用场景。
一、核心日志体系
1. 重做日志(Redo Log)
作用:保证事务持久性,崩溃后完成数据恢复,三大数据库均有同类机制。
- MySQL InnoDB:
redo log,循环写入,宕机依靠redo完成未刷盘数据恢复。 - Oracle:
联机重做日志(Online Redo Log),循环复用。 - SQLServer:事务日志(
.ldf),兼具undo+redo能力。
2. 归档日志(Archive Log)
归档日志是重做日志的持久副本,开启后才能支持时间点恢复(PITR)。
- MySQL:
binlog二进制日志,相当于Oracle归档日志; - Oracle:
Archive Log归档文件,必须开启归档模式; - SQLServer:事务日志备份,等同于归档方案。
关键区别:MySQL没有独立Archive Log,依靠binlog实现时间点恢复。
二、四类备份方案
1. 冷备(离线备份)
原理:停止数据库服务,直接复制数据文件。 优点:简单稳定;缺点:业务停机,无法满足7×24业务。 适用场景:测试环境、低优先级业务。
2. 热备(在线物理备份)
数据库持续运行,直接拷贝底层数据文件,不中断业务。
- MySQL:
xtrabackup支持InnoDB热备; - Oracle:
RMAN热备份; - SQLServer:在线完整备份。
3. 逻辑备份
导出SQL/数据文件,基于数据库接口读取数据,不拷贝原始磁盘文件。
# MySQL逻辑备份示例mysqldump -u root -p testdb > backup.sqlOracle:expdp;SQLServer:SSMS导出、bcp工具。
特点:跨平台迁移友好;海量数据下速度慢。
三、故障恢复模式
-
完整备份恢复:仅恢复到备份时间点,丢失备份之后的数据。
-
时间点恢复(PITR)
前提:开启归档日志/binlog。
流程:完整备份 + 增量日志,恢复至任意故障前时间。
MySQL:全量备份 + binlog回放Oracle:RMAN备份 + 归档日志SQLServer:完整备份 + 事务日志备份四、方言重点差异
-
MySQL
redo用于崩溃恢复;binlog用于主从复制与时间点恢复,二者职责分离。 -
Oracle
必须开启归档模式,RMAN为官方首选备份工具;redo循环覆盖,依靠归档防止日志丢失。 -
SQLServer
所有操作记录在ldf事务日志,没有独立binlog/归档文件,持续备份日志实现增量恢复。
五、实践规范
- 生产环境禁止只做冷备,线上优先热备+日志持续备份;
- 定期执行备份恢复演练,备份文件不代表可用备份;
- 逻辑备份适合迁移,海量生产数据库优先物理热备;
- 归档/binlog务必持久化到独立存储,防止磁盘故障丢失日志。
SQL 系列(八):事务日志与备份恢复
https://fuwari.vercel.app/posts/sql-series/sql-08-transaction-log-backup/