我最近开始担任初级 DBA 的角色......昨天我为一位同事创建了一个新数据库,我的老板让我确保我们尽快得到一个备份计划。
我没有多想,进入代理,创建了一个每晚凌晨 1 点进行完整备份的工作。为自己感到骄傲,我去睡觉了,不再想它了。今天早上我开始认为这还不够好——如果数据库在凌晨 12 点死掉,那么他们将丢失近 23 小时的数据,这可能会让我被解雇。:)
因此,为了确保我理解这一点——我认为除了完整备份之外,我还需要进行差异备份。看完本教程后,我有几个问题:
- 我是否会进入代理并添加一个每小时(例如)创建差异备份的作业?
- 如果我的理解是正确的,那将每小时备份一次事务日志,直到凌晨 1 点进行完整备份,然后它将“重置”T-Log 并从第二天重新开始,因此最多为 1 小时数据丢失 - 对吗?
- 所以最后,我会在代理上有 2 个工作,一个每天凌晨 1 点触发以进行“完整”备份,另一个每小时触发一次以进行差异备份?
Kin 正确地向您指出了Ola Hallengren 的备份和维护解决方案。
听起来你是新手,所以也可以考虑调查:
Aaron Bertrand 正确地指出了为什么事务日志不断增长或空间不足?.
Usr 是正确的;在您测试恢复之前,假设您的备份毫无价值。
评论者也说的对,一定要咨询商家。
更详细地说,您需要:
至于一般的备份计划,我会首先考虑:
我认为这是最流行的问题:“我应该多久备份一次数据库”。因此,这里有一些简单的答案:“一切都取决于您的数据库有多大?您对数据库进行更改的频率如何?以及您的数据有多重要?”
例如,您可以每 24 小时进行一次完整备份(就像您所做的那样),每 6 小时进行一次差异备份,每小时备份一次事务日志。那么,现在让我们深入挖掘:
全数据库备份:
完整数据库备份备份所有数据文件和事务日志的活动部分。事务日志的活动部分是将数据库恢复到事务一致点所必需的。请记住:如果您使用简单恢复模型,事务日志将在检查点过程中被截断。并且时间点恢复是不可能的。
差异数据库备份:
差异备份的创建与完整备份类似,但有一个重要区别——差异备份仅包含自上次完整备份(事务日志的活动部分)以来更改的数据。差异备份是累积的而不是增量的。这意味着差异备份包含自上次完整备份以来所做的所有更改,尽管它们已经包含在以前的差异备份中。
事务日志备份
事务日志备份包含在上次事务日志备份或第一次完整备份与备份过程完成时创建的最后一个日志记录之间创建的所有事务日志记录。事务日志备份允许将数据库恢复到故障发生前的特定时间点。它是增量的,这意味着为了将数据库恢复到某个时间点,所有事务日志记录都需要重放到该特定时间点的数据库更改。请注意,事务日志备份仅适用于完整或批量日志恢复模式。
假设您使用这样的数据库备份计划,每 24 小时进行一次完整备份,每 6 小时进行一次差异备份,每小时进行一次事务日志备份。并且您的数据库在完整恢复模式下运行。看下图:
一些关键数据在 20:30 被删除,在这种情况下我们最好将数据库恢复到 20:29。接下来是恢复过程:
在这种情况下,从 20:29 到 21:00 的数据将丢失。