文章目录
数据备份分类
根据备份目标分类
- 数据备份
- 日志备份
根据备份数据文件的范围进行分类
- 完整数据库备份
- 文件备份
- 部分备份
完整数据库备份
原理
复制数据库里的所有信息,通过一个单个完整备份可将数据库恢复到某个时间点的状态。但由于数据库备份是一个在线的操作,一个大的完整数据库备份需要一段时间,数据库在该段时间内还会发生变化。所以完整数据库备份还要对部分事务日志进行备份,以使恢复数据库到一个事务一致的状态。
适用场景:小数据库
- 简单易用
- 速度快
不适用场景:大数据库
- 耗时
- 占用大量存储空间
从是否复制所有的数据分类
- 完整备份
- 差异备份
差异备份
差异备份原理
差异备份基于差异,备份要求数据库之前做过一次完整备份。差异备份仅捕获自该次完整备份后发生更改的数据,这个完整备份被称为差异备份的“基准”。差异备份仅仅包括建立差异基准后更改的数据。
差异备份相对完整备份的优点
- 占用少量存储空间
- 备份速度快
- 便于频繁执行,从而降低数据丢失风险
日志备份
事务日志备份
每个日志备份都包括创建备份时处于活动状态的部分事务日志以及先前日志备份中未备份的所有日志记录。不间断的日志备份序列包含数据库的完整日志链。在完整恢复模式下,连续不断的日志链可以将数据库还原到任意时间点。
最常用的备份方法
分级 | 完整备份 | 差异备份 | 日志备份 |
---|---|---|---|
数据库级 | 完整数据库备份 | 差异数据库备份 | (一般)日志备份 |
文件级 | 完整文件备份 | 差异文件备份 | (一般)日志备份 |
选择备份策略和恢复模式
SQL Server 数据丢失的最大时间段
利用数据备份恢复机制保护数据,是不可能保证数据一点都不丢失的,SQL Server 不可能时时刻刻做数据库备份,每次备份之间总要有一定的时间间隔。此时间间隔之间的数据变化在下一次备份之前,是没有保护的。因此,数据丢失的最大时间段就是两次备份之间的时间间隔。
频繁备份是否合适?
既然数据丢失的最大时间段为两次备份之间的时间间隔,提高备份频率,降低备份间隔,从而减少数据丢失量。但是,备份越频繁,需要的投入也越多。
- 备份越多,要管理的备份文件也越多,即数据库恢复时要恢复的文件也越多。要建立一个合适的备份管理制度
- 备份虽不会阻塞数据库的正常操作,但会占用磁盘IO。若服务器本身IO就比较繁忙,频繁的备份会降低数据库的IO性能。
- 备份难免会因为种种因素失败,备份越频繁,遇到失败的几率越大。因此 DBA 需要及时处理错误,将备份任务恢复常态。
日志备份的局限性
使用日志备份,可将数据库恢复到故障点或特定的时间点。因此日志备份在备份策略中具有很重要的角色。但日志备份只能在完整恢复模式和有些大容量日志恢复模式的数据库上进行。制定备份策略,首先要决定是否需要日志备份,若需要,则数据库恢复模式就要选成完整模式,若不需要做日志备份,则数据库模式就要设置简单,否则会遇到日志文件无线增长问题。
简单恢复模式下的备份
简单恢复模式下,不能做日志备份,所以它只支持最简单的备份和还原方式,很容易管理。如果没有日志备份,则只能将数据库恢复到最后一次备份的结尾。若发生灾难,数据库最后一次备份之后所做的数据修改将全部丢失。
如下图所示,数据库有5个备份,灾难发生在 t6 时间点,因此只有在时间 t5 进行的最新的一份数据库备份需要被还原。还原此备份会将数据库恢复到 t5 这个时间点,t5 时间点之后的数据更新都会丢失。
优点
- 容易管理
- 恢复简单
缺点
- 无日志备份,只能将数据库恢复到最后一次备份的结尾
- 数据丢失风险会随时间增长和增加,直到进行下一个完整备份或差异备份为止。
建议
限定充足的备份频率,以避免遗失大量数据。同时,频率也不能太高而让备份变得难以管理。
使用场景
只适合于可频繁备份的小型数据库
简单恢复模式下的完整数据库备份+差异数据库备份
为降低风险,可引入差异备份,使用差异数据库备份补充数据库完整备份,从而降低工作损失风险的一种备份策略。
如下图所示,在第一次数据库完整备份后,连续建立了三次差异备份。第三次差异备份后,进行第二次数据库完整备份,建立新的差异基准。
差异备份相对完整备份的优点
- 开销低
- 可频繁执行
适用场