了解备份类型

use*_*240 6 sql-server backup

我最近开始担任初级 DBA... 昨天我为一位同事创建了一个新数据库,我的老板要求我确保我们尽快制定备份计划。

我没有多想,进入代理,创建了一个每天晚上凌晨 1 点进行完整备份的工作。为自己感到自豪,我上床睡觉,不再考虑它。今天早上我开始认为这还不够“足够好”——如果数据库在凌晨 12 点死掉,那么他们将丢失近 23 小时的数据,这可能会让我被解雇。:)

所以为了确保我理解这一点 - 我认为除了我的完整备份之外,我还需要做差异备份..看完本教程后,我有几个问题:

  1. 我是否会直接进入代理并添加一个每小时发生的作业(例如)以创建差异备份?
  2. 如果我的理解是正确的,那么它会每小时备份一次事务日志,直到它进行完整备份时的凌晨 1 点,然后它会“重置”T-Log 并从第二天重新开始,因此最多 1 小时数据丢失 - 这是正确的吗?
  3. 所以最后,我会在代理上有 2 个工作,一个每天凌晨 1 点启动以进行“完整”备份,另一个每小时启动一次进行差异备份?

Ant*_*rds 5

Kin 为您指出Ola Hallengren 的备份和维护解决方案是正确

听起来你是新手,所以还要考虑:

Aaron Bertrand 正确地指出为什么事务日志不断增长或空间不足?.

Usr 是正确的;在您测试恢复之前,假设您的备份毫无价值。

评论者也说得对,一定要咨询商家。

更详细地说,您需要:

  • RPO:恢复点目标。多少数据丢失是可以接受的 - 即恢复到丢失前一小时内?一天?
  • RTO:恢复时间目标。重新恢复系统需要多长时间。
  • 至少有一个基本的DR 计划,特别是,您的 RPO 和 RTO 适合哪些类型的“灾难”?
    • 损坏的数据库
    • 硬盘崩溃
    • 多个驱动器崩溃导致 RAIDset 丢失
    • 意外删除文件
    • 服务器在移动过程中掉线
    • 服务器被盗
    • 建筑物被烧毁
    • 区域性自然灾害(大型飓风、地震、台风、海啸、重大火山爆发、重大洪水)
  • 预算
    • 得到这个之后,你可以回去重新协商之前的点。

至于一般的备份计划,我会首先考虑:

  • 搜索任何有人截断日志的地方……然后停止!你不想打破你的日志链!
    • 同样,如果您要进入和退出 SIMPLE 恢复模式。
  • 弄清楚您的备份需要去哪里;备份到保存数据库或日志的相同磁盘轴本身是毫无意义的;丢失磁盘,您将一举丢失活动数据库和备份。
  • 在所有情况下,将 CHECKSUM 设置为 on。
  • 定期对所有内容进行完整备份。
    • 也许这是每天一次,也许每周一次,也许每两周一次,甚至每月一次。
    • 注意:保持多于一个是有用的;对于 FULL(如果没有大容量日志更改,则为BULK-LOGGED )恢复模型数据库,如果您有之前的完整备份和未中断的日志链,则可以跳过损坏的完整备份。
  • 完整备份是 Master 允许的唯一备份。
    • 这方面的时间必须至少与您的 RPO 一样频繁。
  • 也不要忘记备份msdb,你还不如把模型扔进去。
    • 是的,模型。有时它具有用户定义的类型等。
  • SIMPLE 模式数据库上的差异备份
    • 这方面的时间必须至少与您的 RPO 一样频繁。
  • 可选:FULL 和 BULK-LOGGED 数据库上的差异备份
    • 这些可以让你有更快的恢复
    • 这些还可以让您“跳过”完整备份和差异之间的损坏/丢失/损坏的事务日志备份,之后只要您的日志链从那时起就可以继续恢复事务日志。
  • 在所有 FULL 和 BULK-LOGGED 数据库上进行日志备份。
    • 这方面的时间必须至少与您的 RPO 一样频繁。
    • 这是强制性的,以减少 t-log 大小
  • 运行测试恢复;它们是在同一台服务器上还是在不同的服务器上都没有关系,只需运行它们即可。
  • 谁有权访问备份
  • 备份加密
    • 加密密钥管理
  • 异地存储
    • 以及这如何影响 RTO
      • 在“更大”的灾难期间;甚至暴风雪或泥石流也会增加数小时或数天的时间。