【问题标题】:Does the Full Recovery Model Generate Additional Transaction Logs?完全恢复模型是否会生成额外的事务日志?
【发布时间】:2009-03-05 01:28:26
【问题描述】:

我阅读了一些关于恢复/备份的在线书籍,一个愚蠢的问题,如果我使用完整数据库备份/完整恢复模式,对于备份操作本身,它是否会为源数据库服务器生成任何额外的事务日志?完全恢复操作是否会为目标数据库生成额外的事务日志?

【问题讨论】:

    标签: sql-server backup restore recoverymodel


    【解决方案1】:

    一个更有用的观点可能是说完全恢复可以防止事务日志的内容被覆盖而没有其他操作允许它们被覆盖

    SQL Server 将记录大多数事务(例如批量加载和一些其他事务),并且在简单恢复模式下运行时,在与创建相同的事务相关的事务结束时有效地丢弃新创建的日志内容。在完全恢复模式下运行时,传输日志的内容会保留,直到标记为可被覆盖。要将它们标记为可被覆盖,通常会执行备份(完整或跨日志)。

    如果 trans 日志中没有空间并且没有标记为可覆盖的日志内容,则 SQL Server 将尝试增加日志的大小。

    实际上,完全恢复要求您管理事务日志,通常通过每隔一段时间执行一次事务日志备份(如果您没有 SLA 可工作或其他驱动程序来确定,则每 1 小时可能是一个很好的经验法则多久执行一次)

    【讨论】:

    • 酷,卡尔! 1.“对此的更多看法可能是说完全恢复可以防止事务日志的内容被覆盖而没有其他操作允许它们被覆盖”-您的意思是当我们在线恢复数据库时,数据库本身和恢复会生成事务日志吗?
    • 2. “SQL Server 将记录大多数事务并在简单恢复模式下运行时”——在恢复期间,需要记录什么? 3.“在与创建相同的事务结束时丢弃新创建的日志内容”——这样可以避免数据丢失吗?为什么?
    • 1/ 在数据库上执行的操作(插入、更新、删除)将在 trans 日志中生成内容。恢复 DB 不会生成 trans log,它在某些情况下会使用它们(时间点恢复很常见) 2/ 在恢复期间(恢复 DB)没有任何内容记录到 trans log。 3/ 看下一个
    • Google 或查看在线图书,了解简单和完全恢复的时间点。这是一个需要你回答的重要问题。答案取决于您可以承受多少数据丢失以及对恢复模型的理解。
    • 如果您处于简单恢复模式,您只能恢复到最后一次备份。例如。在 00:00 备份,DB 在 08:00 丢失,8 小时的工作丢失。在完全恢复模式中,在 00:00 时备份,事务日志每小时备份一次。 DB 在 08:01 丢失,丢失了 1 分钟的工作。
    【解决方案2】:

    我不确定我是否完全理解您的问题,但这里是。将您的数据库保持在完全恢复模式可以使您的事务日志变得非常大。权衡是您可以恢复到恢复点。

    事务日志大于正常的原因是所有事务都已完全记录。这可以包括批量记录操作、索引创建等。

    如果驱动器空间不是问题(并且驱动器如此便宜,不应该),这是推荐的备份方法。

    【讨论】:

    • 1.谢谢 GregD,有 3 种恢复模式,简单/完整/批量记录,你是什么意思模式“权衡是你可以恢复到恢复点。”?我觉得它不属于3种模式。 :-) 2. 完整的数据库备份本身不会为源数据库生成额外的事务日志?
    • "事务日志大于正常的原因是所有事务都被完全记录。" -- 你的意思是恢复进程有自己的事务日志,并且会一起记录在目标数据库事务日志文件中?
    • 在完全恢复中,您可以恢复到数据库失败的时间,因为您使用的是完整/差异/反式日志进行恢复。简单的恢复模式不允许这样做,因为您不备份传输日志。
    • 您好 GregD,我同意并理解您的回复。但这是我的哪个问题的答案? :-)
    • 备份的行为不会产生额外的事务日志。话虽如此,将数据库置于完全恢复模式会使您的事务日志比将数据库置于简单恢复模式时更大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多