在我们的 SQL 服务器(2000、2005 和 2008)上,我们每天晚上运行一次完整备份,每 2 小时运行一次事务日志备份。我们并不担心这两个过程会发生冲突,但最近我们遇到了以下一些问题:
在一台服务器上,trans log 备份偶尔会阻止完整备份,必须手动停止后才能完成完整备份
我们有时会得到一个非常大的跨日志备份文件(有时比完整备份还大!),这似乎是在完整备份运行的同时发生的。
我发现一个参考资料表明这些“不允许”同时运行,不管这意味着什么:SQL 2000 联机丛书和SQL 2005 联机丛书。我不确定这是否意味着服务器将简单地防止它们同时运行,或者我们是否应该在完整备份运行时明确停止日志备份。
那么,这些之间是否存在已知的冲突/问题? 不同 SQL 版本的答案是否不同? 我是否应该让 trans log 备份作业检查完整备份是否在执行之前正在运行?(我该怎么做……?)
答案1
在 2000 中,日志备份不能与差异或完整备份同时运行(因为日志备份将清除一些事务日志,而完整/差异必须备份一些日志以允许数据库的恢复副本在事务上一致)。
2005 年取消了这一限制。它们可以同时发生,但与完整或差异备份同时进行的日志备份不会清除日志。日志清除将被延迟,直到完整或差异备份完成 - 这进一步证实了完整和差异备份会清除日志的神话 - 但事实并非如此。
谢谢
答案2
数据库备份通常应该是序列化的。
大型日志备份可能是由于在上次日志备份和完整备份之间发生的数据库维护操作而发生的。减少日志备份之间的间隔可能会有所帮助。
您可以运行一些 T/SQL 来检查 sysprocesses 表(如果是 SQL 2005+,则检查 DMV),以查看是否已对该数据库执行备份。如果没有,则执行备份;如果是,则正常退出。
答案3
还有一种可能性:如果您已配置镜像并且它被暂停,则只要镜像暂停,您的事务日志和数据库备份就会增长并继续增长。
答案4
在我的场景中...我们正在进行日志传送
SQL 2005 db 完整备份时间:- 23 小时 Tran 日志@每 15 分钟:- 即 22.15、22.30、22.45、23.00。
但是每当数据库完整备份开始时...tran 日志就会停止生成,并且我们的备用数据库会不同步。
因此我们将交易日志延迟了 5 分钟...问题得到了解决。