SQL Server 2012 日志文件最佳实践

Too*_*n21 3 sql-server

我们有一个 2012 SQL Server,我正在研究它目前是如何备份的。我们确实有一个每小时运行一次的卷影副本。我们还有一个夜间完整备份。DB 在 FULL 模式下运行。

我的问题是我的日志文件似乎增长得非常快。我已经阅读了每 5 分钟一次的日志备份。我知道缩小日志文件通常不是一个好的解决方案。我想确保我们有完整的恢复选项。

如果我每晚进行备份,然后立即进行日志备份,如果当时恰好有事务在进行,是否会中断一致性?

进行日志备份应该释放日志中的空间以防止文件增长,保留足够大的文件用于一天的活动是可以的。或者我应该更频繁地进行日志备份?

SQL Server 世界的新手,并希望尽可能地学习所有最佳实践。我也只是想确保我们正在尽一切努力来保护我们的备份。谢谢。

Han*_*non 5

将日志备份之间的间隔视为您可以承受的最大数据量丢失。

意识到您需要恢复“完整”备份,以及自完整备份以来进行的所有日志备份,以便回到最近的时间点。

此外,练习您的恢复策略。这可能是您可以针对备份做的最重要的事情。你可以拥有世界上所有的备份,但如果你不练习如何恢复它们,它们在发生灾难时对你没有任何好处。

关于您的问题:

我的问题是我的日志文件似乎增长得非常快。我已经阅读了每 5 分钟一次的日志备份。我知道缩小日志文件通常不是一个好的解决方案。我想确保我们有完整的恢复选项。

进行完整备份和日志备份将使您的日志处于非常接近空的状态(除非您有依赖日志记录的日志传送、镜像、始终开启等)。日志随后将继续增长,直到进行下一次日志备份,此时 SQL Server 将开始重新使用日志文件中的空间。有关日志增长的一些有趣阅读,请参阅问题。

如果我每晚进行一次备份,然后立即进行日志备份,如果当时恰好有事务在进行,是否会导致一致性中断?

任何在日志备份开始时尚未提交的事务都将在恢复过程中自动回滚。但是,如果您有稍后提交这些事务的日志备份,则一旦恢复该稍后的日志备份,它们将在恢复期间提交。

通常,完善的生产级备份策略包括以下最小步骤:

  1. 每天在某个低活动点进行一次完整备份。例如说凌晨 2:00。
  2. 每 15 分钟进行一次日志备份,保留自上次夜间完整备份以来进行的所有日志备份。
  3. 每天将完整备份和每个干预日志备份恢复到非生产设备上,以确保备份文件和恢复程序实际工作。

如果每天一次的完整备份不可行,您可以改为:

  1. 每周进行一次完整备份。
  2. 每天进行一次差异备份。
  3. 每 15 分钟进行一次日志备份。保留自上次完整备份或上次差异备份(以最近的为准)以来进行的每个日志备份。
  4. 每天将完整备份和每个干预日志备份恢复到非生产设备上,以确保备份文件和恢复程序实际工作。

您可能有兴趣查看在SQL Server 社区中备受推崇的Ola Hallengren 的备份解决方案