我对 sql server 2008 中的事务日志备份有疑问。我目前每周(星期日)进行一次完整备份,每天进行事务日志备份。星期日我将完整备份放在文件夹 1 中,星期一我也将第一个事务日志备份放在同一个文件夹中。星期二,在进行第二次事务日志备份之前,我将第一个事务日志备份从文件夹 1 移到文件夹 2,然后进行第二次事务日志备份并将其放在文件夹 1 中。星期三、星期四等也是一样。基本上,在文件夹 1 中,我始终有最新的完整备份和最新的事务日志备份,而其他事务日志备份则在文件夹 2 中。我的问题是,当 sql server 即将进行第 4 次(星期四)事务日志备份时,它是否会查找以前的事务日志备份(第 1 次、第 2 次和第 3 次),以便此新备份仅包含上次备份中的事务,或者它是否有其他方式来了解是否有其他事务日志备份。基本上,我之所以问这个问题,是因为我所有的事务日志备份似乎大小都差不多,而且我认为它们的大小取决于自上次事务日志备份以来的事务量。
例如:如果您有一个完整备份,然后您进行了事务日志备份,并且该事务日志备份的大小为 200 MB,现在您立即进行了另一个事务日志备份,那么最后一个事务日志备份应该比第一个小得多,因为这两个备份之间没有或几乎没有发生事务,对吗?至少,这是我的假设。在我的情况下,第二个备份的大小与第一个备份几乎相同,我想知道原因是否是因为我将第一个事务日志备份移动到了不同的文件夹,所以现在 sql server 认为我拥有的只是一个完整备份,然后它会获取自完整备份以来发生的所有事务并将其放入第二个事务日志备份中。
有人能解释一下我的假设是否正确吗?谢谢...
答案1
Chris 和 joeqwerty,感谢你们的回答。我理解差异备份和日志备份之间的区别,但我想我没有表达清楚。我一直认为日志备份包含自上次日志备份(或第一次日志备份的完整备份)以来的所有事务,而您刚刚证实了这一点,所以我想我是对的。让我感到困惑的是,我今天早上进行了一次日志备份,然后今天下午我不得不进行另一次(计划外的)日志备份,这两个日志备份的大小大致相同,尽管数据库上不应该有太多活动(尽管我可能错了)。所以基本上,我担心通过将旧的日志备份文件移动到不同的文件夹,我会“强制”SQL Server 获取自完整备份以来的所有事务(并且本质上表现得像差异备份,因为无论如何,这是第一次日志备份)。所以,我想只要 SQL Server 在内部跟踪此信息并且我可以移动文件,我就没问题了。再次感谢...
答案2
我认为您混淆了事务日志备份和差异。
SQL 日志备份是自上次日志备份以来的更改。要进行恢复,您需要完整备份以及完整的日志备份链,否则您无法恢复到某个时间点。SQL 会在内部跟踪所有内容,因此即使您移动文件也没关系。关键是需要完整备份以及所有日志备份的完整链。
另一方面,差异备份将包括自上次完整备份以来的所有更改,而不管您在此期间所做的任何其他差异或日志备份。
如果您的流量一致,那么您的日志备份可以计算出大约相同的大小,因为它们平均每个事务的量相同。
这是不言而喻的......但我还是要说......通过尝试一些测试恢复来经常测试您的备份 - 这是找出您的策略是否存在漏洞的最佳方法。
答案3
SQL 服务器在执行任何后续备份时不会关注硬盘上的备份文件。它会在数据库日志文件内部跟踪所有这些内容。
是的(一般来说),事务日志备份的大小在某种程度上取决于自上次日志备份以来发生了多少活动,但可能存在最小大小。
但是每周完整备份和每日日志备份是一种不寻常的计划。更常见的是每周完整备份和每日差异备份,再加上每小时日志备份(如果你真的需要时间点恢复)。+1 点赞 spencer 的链接。
答案4
(这个问题可能更适合serverfault.com而不是stackoverflow。)
事务日志的备份仅备份以前的事务日志备份尚未备份的事务。
也就是说,为了恢复,您将需要完整备份以及自完整备份开始以来的每个事务日志备份。
高血压
我认为您可能将事务日志备份与差异备份混淆了。
http://technet.microsoft.com/en-us/library/aa337534%28SQL.100%29.aspx