我对事务日志的了解越多,我就越困惑。我想很多人都错了。我只是想确保理解这个理论。如果不对,请纠正我的想法。
日志与完全备份或差异备份无关(无任何绑定或相关)。该日志包含自上次日志备份以来对数据库的所有更改。因此日志链。在对数据库进行更改时,会在日志中放置一个副本,并在将其复制到数据库时进行标记。我想把它看作是从一开始就所有变化的完整历史。备份事务日志(LOG)时会清除它。连续的流/变化记录。
是的,日志链从创建的第一个完整备份开始。但是,在没有重置日志链之后的任何满员。
全双工的登录 -log-数 - 对数
我们假设你做了一个完整的备份。然后记录备份。第一个日志将包含在完全备份之前提交的更改。它只是日志的本质。同样,日志不以任何方式与完整或差异相关。我假设当您恢复完整日志之后,通过将完整备份的日期和时间与日志进行比较,它将知道从何处开始恢复。您不想重新提交已在完整备份中完成的更改。这是我的思考过程。
我们假设我们有这个备份过程:
每周完整/每晚差异/每小时记录
为了简洁起见,我不会用大量的日志备份来填充示例。它应该得到我的观点。
展开 - 的登录 - 的登录 - 的登录 - 的登录 -Diff-的登录 - 的登录 - 的登录 - 的登录 -Diff-的登录 - 的登录 - 的登录 - 的登录
展开 -log-数 - 对数对数的Diff-数 - 对数 - 对数的对数的 DIFF - 的登录 - 登录 - 的登录 - 的登录
问题:
网上似乎有20个不同的答案相互冲突。没有人可以直截了当。
答案 0 :(得分:0)
我认为您对日志和恢复的理解对于使用FULL RECOVERY模式的数据库是正确的(这是默认设置)。作为次要评论,SQL Server在决定哪些日志记录相关时不使用日期/时间,它使用日志序列号(LSN)但概念是相同的。
回答上一个问题:完整备份不会使日志链失效是正确的,但链中的日志备份损坏或丢失会使故障点之前的所有日志备份失效。如果日志文件损坏,则还原选项为(1)上次完整备份加上任何差异,或者(2)如果在日志失败后进行完整备份“B”,则可以恢复完整备份“B”并恢复后续日志备份。选项二为您提供时间点恢复到'B'之后的任何点,因为您再次拥有一条完整的链。
您上一个问题的含义是:如果您有定期的完整备份和日志备份,则损坏的日志只会在下一次良好的完整备份之前生效。
免责声明:我不是DBA,更像是对备份和恢复感兴趣的数据库开发人员,并且必须为Microsoft MCSE进行一些研究。