SQL 完全恢复模式下数据库的服务器备份策略问题

SQL Server backup strategy questions for DB in Full recovery mode

我最近负责了一些 SQL 服务器的数据库管理,从 SQL Server 2005 到 2014,其中许多数据库处于完全恢复模式,但是没有很好的进行曾经制定过备份维护计划。

在我看来,以前的DBA只会在事务日志文件失控并填满硬盘时才处理它们。所以我想改变这个并一劳永逸地解决这个问题。我一直在阅读并认为我对需要做的事情有一个体面的理解,所以我想验证我的理解并问几个问题来澄清我仍然没有完全理解的几点.

因此,根据我迄今为止的理解,我需要创建一个从完整备份开始的维护计划。我仍然需要与管理层讨论以解决诸如 RTO、acceptable 数据丢失等问题,因此我们假设在这个示例中我们将在周日进行完整备份。

接下来,我将每晚将差异备份添加到此维护计划中……周一至周六。我意识到这也可能是完整备份或 运行 更频繁的差异,但这只是一个例子,以确保我正确理解事情。

现在关于事务日志备份。我知道我需要备份这些并 t运行 整理日志文件以防止它不断增长和失控。我不知道是否有关于多久备份一次的具体建议,但我看到了 15 分钟的建议。我想这更属于 acceptable 数据丢失 window。对吗?

所以我发现的另一件事是,当您使用 t运行cation 备份事务日志文件时,如果日志文件已经超出控制,它不会收缩文件。我还读到,缩小这些文件是不好的,至少定期缩小,因为一旦缩小,它就需要再次增长,这会导致碎片化和性能问题。

现在由于我目前处于文件已经失控的情况,所以我假设一旦我已经完成维护,我实际上应该缩小一次日志文件。这个假设正确吗?

此外,一旦我收缩了这一次事务日志文件,是否有任何我应该执行的维护任务运行避免由于收缩日志文件而导致的性能问题?

我想知道的另一个问题是关于时间点恢复。因此,假设我在 5:00 AM 进行了一次完整备份,并且我还每 15 分钟进行一次事务日志备份。我收到提醒,在 6:18 AM 出现了错误(假设删除了 table)。所以我知道我可以通过在 5:00 AM 发生的完全备份恢复并将其保留在 NO RECOVERY 模式并将所有事务日志备份从 5:15 AM 恢复到 6:15 AM,但是在这里是我感兴趣的...因为我的数据库处于完全恢复模式,是否有可能以某种方式使用我现有的事务日志文件(不是备份)来前滚 6:15 和 6:17 就在 table 被删除之前?如果是这样,你会怎么做?我想如果您的事务日志文件丢失了硬盘驱动器,或者您的服务器爆炸了,这显然行不通……但是在我概述的情况下,它可行吗?

谢谢

  1. 我建议在每个人都停止工作后进行完整备份,e。 G。在 10 p.m。 (如果是这样的话),而不是在人们开始工作前不久的早上。只是为了给它足够的时间运行.

  2. 就个人而言,如果数据库不是太大而无法保存备份(比如说 14 天),我更喜欢每天进行完整备份而不是增量备份。我觉得依赖更少的文件更好。如果数据库和完整备份太大,增量备份可能是更好的选择。

  3. 正如您所说:您一天创建多少个事务日志备份取决于可接受的数据丢失window。在超过 5 人在系统上工作的环境中(只是一种直觉)我会将他们配置为 运行 所有 15 分钟,在非常大的系统上可能甚至更多。

  4. 第一次事务日志备份后,您可能希望将日志文件收缩一次。

  5. 我认为在日志收缩后没有必要运行任何优化。

  6. 据我所知,无法恢复 06:15 和 06:17 之间的交易。

激活事务日志备份时,请记住第一个事务日志备份会非常大(大约是当前大日志的大小)。确保磁盘上有足够的 space,直到您缩小日志文件并删除第一个事务日志(通常在维护计划内自动完成,例如 14 天后。)。