【问题标题】:sql transaction log backup theorysql事务日志备份理论
【发布时间】:2017-09-10 17:13:18
【问题描述】:

我越是查看事务日志,我就越感到困惑。我想很多人都搞错了。我只是想确保我理解这个理论。如有错误请指正。

日志与完整或差异备份无关(没有任何关联或关联)。该日志包含自上次日志备份以来对数据库的所有更改。因此,日志链。当您对数据库进行更改时,会在日志中放置一个副本,并在将其提交到数据库时进行标记。我喜欢把它看作是自一开始以来所有变化的完整历史。当您备份事务日志 (LOG) 时,它会被清除。连续的变化流/记录。

是的,日志链从创建的第一个完整备份开始。但任何填满后都不会重置日志链。

  1. 加载到将要修改的数据库的内存部分
  2. 将更改/查询复制到事务日志中
  3. 更改内存中加载的部分
  4. 提交到磁盘并检查日志

完整-日志-log-log-log

假设您进行了完整备份。然后记录备份。第一个日志将包含在完整备份之前提交的更改。这只是日志的性质。同样,日志与完整或差异没有任何关系。我假设当您恢复完整然后恢复之后的日志时,它会通过将完整备份的日期和时间与日志进行比较来知道从哪里开始恢复。您不想重新提交已在完整备份中完成的更改。这是我的思考过程。




假设我们有这个备份过程:

每周完整/每晚差异/每小时记录

为简洁起见,我不会在示例中填充大量日志备份。它应该能说明我的意思。

完整-log-log-log-log-Diff- 日志-日志-日志-日志-Diff-日志-日志-日志-日志

  • 假设我需要恢复到最新的备份。如果我的差异很糟糕怎么办?我仍然可以恢复到任何时间点,因为我的完整日志和日志都很好。我不需要差异。虽然我的恢复可能需要几天时间。 XD

    完整-log-log-log-log-Diff-log-log-log-log-Diff-log-日志-日志-日志

  • 假设我需要恢复到最新的备份。最快的方法是恢复我的完整备份,然后是最新的 Diff。最后,我会在 diff 之后恢复所有日志。我假设 sql 会将日志的日期/时间与差异进行比较并重新应用正确的更改。同样,日志与完整或差异无关。它们只是自上次日志备份(独立)以来的连续变化流/记录。

    问题:

  • 我能正确理解日志吗?
  • 我的恢复示例是否正确?
  • 如果日志损坏,如何重新启动日志链?显然,完整备份不会重新启动日志链。

    网上似乎有 20 个不同的答案相互冲突。没有人能直截了当。

    https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/transaction-log-backups-sql-server

    https://www.sqlskills.com/blogs/paul/a-sql-server-dba-myth-a-day-2030-restarting-a-log-backup-chain-requires-a-full-database-backup/

  • 【问题讨论】:

    • 你有什么问题?
    • @GordonLinoff 我更改了帖子以更好地反映我的问题。

    标签: sql sql-server logging transactions


    【解决方案1】:

    我认为您对日志和还原的理解对于使用 FULL RECOVERY 模式(默认设置)的数据库是正确的。作为一个小评论,SQL Server 在决定哪些日志记录相关时不使用日期/时间,它使用日志序列号 (LSN),但概念是相同的。

    回答您的最后一个问题:完整备份不会使日志链失效是正确的,但链中损坏或丢失的日志备份会使所有日志备份在故障点之前失效。如果日志文件损坏,您的恢复选项是 (1) 最后一次完整备份加上任何差异,或 (2) 如果您在日志失败后进行了完整备份“B”,则可以恢复完整备份“B”并恢复后续日志备份。选项 2 可让您在时间点恢复到“B”之后的任何点,因为您再次拥有完整的链条。

    您最后一个问题的含义是:如果您有定期完整备份和日志备份,则损坏的日志仅在下一次良好的完整备份之前有效。

    免责声明:我不是 DBA,更多的是对备份和恢复感兴趣的数据库开发人员,并且不得不为 Microsoft MCSE 进行一些研究。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      相关资源
      最近更新 更多