【发布时间】:2017-09-10 17:13:18
【问题描述】:
我越是查看事务日志,我就越感到困惑。我想很多人都搞错了。我只是想确保我理解这个理论。如有错误请指正。
日志与完整或差异备份无关(没有任何关联或关联)。该日志包含自上次日志备份以来对数据库的所有更改。因此,日志链。当您对数据库进行更改时,会在日志中放置一个副本,并在将其提交到数据库时进行标记。我喜欢把它看作是自一开始以来所有变化的完整历史。当您备份事务日志 (LOG) 时,它会被清除。连续的变化流/记录。
是的,日志链从创建的第一个完整备份开始。但任何填满后都不会重置日志链。
- 加载到将要修改的数据库的内存部分
- 将更改/查询复制到事务日志中
- 更改内存中加载的部分
- 提交到磁盘并检查日志
完整-日志-log-log-log
假设您进行了完整备份。然后记录备份。第一个日志将包含在完整备份之前提交的更改。这只是日志的性质。同样,日志与完整或差异没有任何关系。我假设当您恢复完整然后恢复之后的日志时,它会通过将完整备份的日期和时间与日志进行比较来知道从哪里开始恢复。您不想重新提交已在完整备份中完成的更改。这是我的思考过程。
假设我们有这个备份过程:
每周完整/每晚差异/每小时记录
为简洁起见,我不会在示例中填充大量日志备份。它应该能说明我的意思。
完整-log-log-log-log-Diff- 日志-日志-日志-日志-Diff-日志-日志-日志-日志
完整-log-log-log-log-Diff-log-log-log-log-Diff-log-日志-日志-日志
问题:
网上似乎有 20 个不同的答案相互冲突。没有人能直截了当。
【问题讨论】:
-
你有什么问题?
-
@GordonLinoff 我更改了帖子以更好地反映我的问题。
标签: sql sql-server logging transactions