SQL Server 备份维护计划(完整、跨日志备份)

SQL Server 备份维护计划(完整、跨日志备份)

我已制定维护计划来执行:

  • 每晚完整备份(覆盖文件)
  • 每 2 小时进行一次事务日志备份(附加到与完整备份分开的 1 个文件中)

数据库处于完整恢复模式。

其想法是让磁带备份代理在 SQL Server 完整备份完成后每晚备份完整备份文件。

但是我对如何设置事务日志的备份文件感到困惑。

处理以下问题的最佳做法是什么:

  1. 定期进行 trans 日志备份
    • 它应该为每个文件创建单独的文件吗?
    • 我怎样才能将服务器上的每个备份都放到磁带上?
  2. 每晚备份完整数据库
    • 每次都要覆盖文件吗
    • 我注意到,即使设置为覆盖,运行 3 天后备份文件仍然很大。(DB=28Gb,夜间备份文件 = 58Gb)为什么会发生这种情况?

总之,就文件细节而言,设置完整和传输日志备份计划并将其备份到磁带的最佳实践是什么?

谢谢,非 DBA 开发人员

答案1

我个人有一个 12gb(并且还在增长)的数据库,它有每晚的备份。我将 5 天的数据分别保存在磁盘上的各自文件中,并每晚将它们复制到磁带上,保留时间约为一个月。我还每小时发送一次事务日志,每个事务日志都保存在各自的文件中。我大约保留了 3 天的数据,但从未将它们复制到磁带上。如果我升级磁带上的存储空间,我可能也会开始这样做,尽管这很可能不需要(在我看来),因为您有介于两者之间的每晚备份。

正如 Peter 所说,最好将备份保留在磁盘上至少几天,以便更快、更轻松地进行恢复,更不用说为了调试而更容易地恢复到辅助数据库中。磁带的保留时间也很好。对我来说这不是什么大问题,但如果您的应用程序中有删除功能,并且客户端有“哎呀,我删除了一些东西……一个月前,我今天需要它,你能帮我找回来吗?”之类的问题,那么这是一个很好的问题。

编辑:
回答评论并在此稍微扩展我的回答。我使用第二个/第三个 SQL 作业来管理文件。在 SQL 2005 中,我在管理文件时遇到了无法正确删除的问题,因此我编写了一些代码 (VBScript) 来在计划任务中帮我删除文件。但在 SQL 2008 中,要么他们修复了这个问题,要么我只是更好地配置了它,它会删除我的旧备份、旧日志传输,甚至另一个备份以保持数据库健康。然后我使用一些 VB 脚本将我的文件复制到“磁带”,下次我感到无聊时我真的应该用 C# 重写它。我使用 IOMEGA REV 驱动器/磁盘作为我的“磁带”,它们运行良好。

答案2

我认为最佳做法是将大约三天的完整备份保存在磁盘上,然后通过磁带备份代理(veritas/tivoli 等)将其扫描到磁带上。

事务日志备份通常配置为与完整备份转到同一驱动器区域,并且磁带备份代理也将捕获它们。

这意味着,如果需要恢复,您可以非常快速地从过去三天的备份中进行恢复。如果要恢复更久以前的数据,则需要将其从磁带中取出。

相关内容