我们有一个 2012 SQL Server,我正在研究它目前的备份方式。我们确实有一个每小时运行一次的卷影副本。我们还有一个每晚的完整备份。数据库以完整模式运行。
我的问题是我的日志文件似乎增长得很快。我每 5 分钟阅读一次日志备份。我知道缩小日志文件通常不是一个好的解决方案。我想确保我们有完整的恢复选项。
如果我每晚进行一次备份,然后在之后立即进行日志备份,如果当时恰好有事务正在进行,是否会导致一致性中断?
进行日志备份应该释放日志中的空间以防止文件增长,留下足够大的文件以进行一天的活动是可以的。还是我应该更频繁地进行日志备份?
SQL Server 世界的新手,想尽我所能学习所有最佳实践。我也只是想确保我们正在尽我们所能来保护我们的备份。谢谢。
将日志备份之间的间隔视为您可以承受的最大数据丢失量。
意识到您需要还原“完整”备份,以及自完整备份以来进行的所有日志备份,以便返回到最近的时间点。
此外,练习您的恢复策略。这可能是您可以针对备份做的最重要的事情。你可以拥有世界上所有的备份,但如果你不练习如何恢复它们,那么在发生灾难时它们对你没有任何好处。
关于你的问题:
进行完整备份和日志备份将使您的日志处于非常接近空的状态(除非您有日志传送、镜像、始终打开等依赖于日志记录的东西)。日志随后将继续增长,直到进行下一次日志备份,此时 SQL Server 将开始重新使用日志文件中的空间。有关日志增长的一些有趣阅读,请参阅此问题。
任何在日志备份开始时尚未提交的事务都将在恢复过程中自动回滚。但是,如果您有提交这些事务的较晚日志备份,一旦恢复较晚的日志备份,它们将在恢复期间提交。
通常,完善的生产级备份策略包括以下最少的步骤:
如果每天一次的完整备份不可行,您可以改为执行以下操作:
您可能有兴趣查看Ola Hallengren 的备份解决方案,该解决方案在 SQL Server 社区中备受推崇。