【问题标题】:Detaching a database as a backup strategy分离数据库作为备份策略
【发布时间】:2018-09-04 15:06:10
【问题描述】:

我已经阅读了数十篇关于为什么这是一个坏主意的文章。反对使用分离数据库作为备份的论据有很多。但是,我仍然认为就我而言,这是有道理的。意识到这些往往是管理员们知道的太少的话,我想把我的策略告诉这里的好人,看看是否有人能告诉我为什么我正在做的事情会更适合内部备份机制.

让我来谈谈一些常见问题。

  1. 我的数据库文件快满了,所以备份只复制 已使用的页面与我无关;
  2. 我没有使用任何文件流存储;
  3. 当我分离并制作副本时,我的应用程序可以处理短暂的停机时间;
  4. 已经解决了伴随分离数据库的各种文件权限噩梦。

数据库的总大小约为 1TB。我分离和附加而不是使用备份的主要原因是性能。在我的测试中,分离数据库、复制底层文件并再次附加原始文件比执行备份要快得多。在恢复期间,附加文件(即使我必须先将它们复制到正确的位置)也比恢复它们要快得多。

我可以通过使用除完整备份之外的其他方式来解决备份性能问题,但这在恢复方面无济于事。发生灾难时,我需要迅速恢复运行。我的应用程序可以定期处理少量停机时间,但任何长时间的停机时间都是灾难性的。恢复 1TB 的数据库所需的时间比企业希望应用程序所能承受的要长。

我经常阅读的最后一条是分离数据库会带来一些风险。就像我们应该对备份执行测试恢复一样,我立即将所有复制的 MDF/LDF/NDF 文件附加到灾难恢复 SQL Server 以确保副本完好无损。我想我在这里的暴露是我可以分离数据库并破坏一些东西,使得原始数据库文件不能再重新附加。老实说,我从来没有见过这种情况,所以如果这真的是一种可能,我觉得它是相当遥远的。我每晚都这样做,所以在这种情况下(不太可能?)我会失去一天的报告数据。

我还有什么遗漏吗?

【问题讨论】:

  • 业务不正常,数据库需要一段时间才能恢复,以防发生灾难,但他们可以每天停机(?),因此可以制作数据库的副本吗?这对我来说似乎是一种非常奇怪的心态,
  • 如果数据库出现故障,业务会丢失一整天的数据吗?您将丢失上次分离数据库时的所有内容。您在问题中提到了这一点,但并没有真正解决它。正如您所说,使用分离的数据库不是一个好的备份策略。你没有发布的是你的论点,为什么在你的情况下它是可以的,而几乎所有其他人都不好。
  • 使用差异备份?您每周进行一次完整备份,每晚进行一次差异备份。然后从您的差异恢复。
  • 那么,您是在说丢失一天的数据是可以接受的吗?
  • 我没有费心向您提供有关为什么这不是一个好主意的详细信息,因为您说您已经研究过了。 “我已经阅读了数十篇关于为什么这是一个坏主意的文章。反对使用分离数据库作为备份的论据很多。”。几乎似乎您希望有人说,尽管有数十篇文章宣称这是一种不好的方法,但它确实没问题。我们不能为你打电话。您和企业必须决定什么对您有用。听起来你找到了你要走的路,并想找到一种方法来证明它的合理性。

标签: sql-server database-design database-administration sql-server-administration


【解决方案1】:

通过这种方法,您可以选择优先考虑减少恢复时间而不是恢复点(恢复时数据丢失)。这是每个人都必须在某种程度上做出的合理权衡。

每次您分离并重新连接以进行备份时,您的数据库都将处于脱机状态,而 BACKUP 命令根本不需要停机。与备份期间的每一天相比,在偶尔恢复期间更关心停机时间似乎是不寻常的,但我想这取决于备份的实际时间和假设的恢复时间。

您还没有提到事务日志备份。对于大多数人来说,日志备份提供了最佳的恢复时间和恢复点。您是否考虑过将相对不频繁的日志备份作为替代策略?

如果恢复时间如此重要,那么您可能需要拥有可以恢复到的热备用硬件。如果您确实有备用服务器,那么您可以使用标准备份和恢复来最大限度地减少停机时间,而不是使用分离方法:只需每天将数据库恢复到备用服务器。您甚至可以记录您的事务日志备份。

与任何备份和恢复策略一样,您应该对其进行测试。进行试运行,看看损失一天工作的实际成本是多少。也许很容易低估这个成本。

当您分离和重新连接时,请确保包含日志文件。除了您附加的副本之外,还保留一份脱机副本。如果附件碰巧失败(比如因为其中一个文件已移动),那么在某些情况下,文件可能会被“触及”,因此它们不能轻易地再次附加。我的建议是永远不要尝试从您的 only 数据库文件副本中附加。

您仍然需要使用 BACKUP 来备份 Master 数据库(如果需要,还需要使用 model/msdb)。

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多