我的生产服务器没有足够的马力在本地运行备份而不会对生产造成影响。我想将它们卸载到我的次要副本,以释放我的主要资源。
我的一般问题和疑虑是:
- 我可以对我的次要副本进行哪些类型的备份?
- 我今天进行差异备份,这将如何工作?
- 这将如何影响我的 RPO/RTO?
- 如何配置备份首选项?
- 我已经配置了备份首选项,但没有得到遵守。我做错了什么?
- 完整性检查呢?我不应该把那些我备份的地方拿走吗?
- 我会破坏我的日志链吗?
- 我是否应该考虑卸载我的备份,还是应该考虑其他替代方案?
我的生产服务器没有足够的马力在本地运行备份而不会对生产造成影响。我想将它们卸载到我的次要副本,以释放我的主要资源。
我的一般问题和疑虑是:
您可以对次要副本进行的备份类型
您可以进行仅复制完整备份和日志备份。您不能在辅助副本上进行传统的完整备份,因为数据库是只读的,并且 SQL Server 无法清除差异位图标志。
仍想进行差异备份
您必须在您的主副本以及完整备份上执行此操作。请记住,您只能在辅助副本上进行仅复制完整备份。为了能够重置差异位图标志,您必须在主服务器上执行此操作。
对 RPO/RTO 的影响
根据您进行备份的位置,您的 RPO/RTO 可能会受到很大影响。辅助副本的同步化可能会落后。当您的备份作业应该正在运行时,可以重新启动辅助复制,以及这些备份可能变得不可靠的六个其他原因中的任何一个。没有什么比计划一个 15 分钟的 RPO 更糟糕的了,只是发现您的次要副本比上次运行事务日志备份时晚了 30 分钟。
配置备份首选项
这在可用性组向导中很容易设置。你有几个选择。
设置首选项后,您需要设置优先级。这是一个 (0-100),0 是最低的,100 是最高的。此设置有助于避免同时在所有次要副本上运行备份,每个次要副本都认为它们是最高优先级。通常,您会将一个副本设置为 100,并酌情减少其他副本。
我已经配置了备份首选项,但没有得到遵守。我做错了什么?
仅设置备份首选项和优先级并不足以确保您的备份在您认为的位置运行。您的备份作业必须了解此设置。本质上,根据您的可用性配置这些值只会通过名为sys.fn_hadr_backup_is_preferred_replica ('dbname')的系统函数公开这些设置。在尝试对任何数据库进行备份之前,您需要确保备份作业正在检查此函数的结果。
完整性检查呢?我不应该把那些我备份的地方拿走吗?
是的,您确实希望在进行备份的地方运行完整性检查,以便您知道您有可以恢复的有效备份。但是,在可用性组中,您实际上需要确保对所有副本运行完整性检查,而不管您将备份放在哪里。仅在辅助副本上运行完整性检查和备份并不能保证主副本上没有损坏。您的辅助副本仅从主副本获取事务日志详细信息。他们不知道主数据库是否有损坏的页面位于磁盘上。如果您还没有在主节点上运行完整性检查,它可能会在数周、数月或更长时间内未被检测到。直到您不再有要恢复到的有效备份时,您才可能发现。
您可能会说,“好吧,我将故障转移到我的辅助副本”。这可能会奏效。但我不认为这是我防止腐败的主要保护措施。我希望尽快收到警报,并且仍然有有效的备份可以返回,以防万一。
日志链呢
在可用性组上进行日志备份时要小心使用日志链。无论您从可用性组上的哪个节点进行日志备份,该日志链都会在所有节点上持续存在。如果您在多个节点上运行日志备份,无论出于何种原因,如果您需要恢复到某个时间点,您将需要所有这些备份。在这里保持简单,将所有日志备份限制到同一个节点。
结论
我的偏好是让我的所有备份都在我的主副本上运行。如果同步落后,无论出于何种原因,我知道我仍然可以依靠我的备份来获得我可以获得的最新副本。如果发生腐败,我会迅速收到通知并做出反应。我还可以依赖辅助副本的一个自动页面修复。如果我遇到在我的主副本上运行备份的问题,我会质疑服务器是否有足够的资源,或者是否需要查询或索引调整以帮助服务器更好地执行。我不希望通过将备份卸载到另一台服务器来限制我正确恢复数据库的能力。
更多信息可在此处和此处获得。