我最近负责一些从 SQL Server 2005 到 2014 不同的 SQL 服务器的数据库管理,其中许多数据库处于完全恢复模式,但是没有设置好的持续备份维护计划。
在我看来,以前的 DBA 只会在事务日志文件失控并填满硬盘时才处理它们。所以我想改变这个并一劳永逸地解决这个问题。我一直在阅读并认为我对需要做的事情有一个不错的理解,所以我想验证我的理解并提出一些问题来澄清我仍然没有完全理解的几点.
因此,根据我迄今为止的理解,我需要创建一个从完整备份开始的维护计划。我仍然需要与管理层讨论诸如 RTO、可接受的数据丢失等问题,因此我们假设对于这个示例,我们将在周日进行完全备份。
接下来我会在这个维护计划中添加每晚的差异备份......所以周一到周六。我意识到这也可能是完整备份或更频繁地运行差异,但这只是作为一个示例,以确保我正确理解事物。
现在至于事务日志备份。我知道我需要备份这些文件并截断日志文件,以防止它不断增长并失控。我不知道是否有任何关于多久备份一次的具体建议,但我看到建议 15 分钟。我想这将更多地属于可接受的数据丢失窗口。那是对的吗?
所以我发现的另一件事是,当您使用截断备份事务日志文件时,如果日志文件已经失控,它不会缩小文件。我还读到至少定期收缩这些文件并不好,因为一旦收缩它,它就需要再次增长,这会导致碎片和性能问题。
现在,由于我目前处于文件已经失控的情况,我假设我实际上应该在我完成维护工作后缩小日志文件一次。这个假设正确吗?
同样,一旦我缩小了事务日志文件,是否应该运行任何维护任务以避免由于缩小日志文件而导致的性能问题?
我想知道的另一个问题是关于时间点恢复。因此,假设我在上午 5:00 进行一次完整备份,并且每 15 分钟进行一次事务日志备份。我在早上 6 点 18 分收到警报,出现了问题(假设一个表已被删除)。所以我知道我可以通过早上 5:00 发生的完整备份进行恢复,并将其置于 NO RECOVERY 模式,并从早上 5:15 到早上 6:15 恢复所有事务日志备份,但这是我感兴趣的在...因为我的数据库处于完全恢复模式,是否可以在删除表之前以某种方式使用我现有的事务日志文件(而不是备份)在 6:15 到 6:17 之间前滚所有事务?如果是这样,你会怎么做?我想这显然不会在您丢失带有事务日志文件的硬盘驱动器的情况下工作,
谢谢