为什么备份你的事务日志非常重要?

我们目前正在为客户实施备份解决scheme,他们的ERP解决scheme使用SQL Server。

ERP解决scheme由另一家公司build立。 而且他们告诉我,备份和截断事务日志是非常重要的。

我一直在读这个事务日志,我不明白为什么这是非常重要的, 当我已经备份整个机器 (我们正在使用ArcServe UDP,它知道SQL Server和使用VSS)。 我的理解是,SQL Server虚拟机上的清理任务已经在处理截断日志,但UDP也允许SQL Server日志截断。

我的理解是,事务日志可以用来恢复损坏的数据库,因为它是所有事务的日志。 但是我已经有了整个数据库的小时备份,所以我为什么要关心?

  • 找出SQL Server 2005中的哪个数据库使用多lessRAM
  • 上次SQL Server停机或数据丢失时,发生了什么?
  • SQL Server镜像是否可靠(高可用性)?
  • SQL服务器的廉价群集
  • 为什么“DbccFilesCompact”状态是“暂停”?
  • 尝试访问与用户SA的SQL Server
  • 9 Solutions collect form web for “为什么备份你的事务日志非常重要?”

    如果您的数据库恢复模式设置为“完整”,则只需执行此操作。 如果设置为“简单”,则不必进行事务日志的备份。 但要注意这两个选项之间的区别!

    首先:如果您希望能够将数据库恢复到特定时间点,则必须使用“完整”模式。 (我认为您可以精确地调整时间,甚至可以指定还原点的毫秒数) 在“简单”模式下,您只能返回上一次完整备份

    如果您不备份/截断您的事务日志,它将增长整个时间(全模式)。 我看到.trn文件比数据库本身大两倍的数据库。 这取决于对数据库进行更改的频率。

    另一点是日志备份通常比完整备份更快。

    所以我认为你的备份计划每小时做一个完整的备份并不是最佳的。 但这取决于你的情况:

    如果你说:好吧,如果我可以恢复数据库到最后一个小时,一切都没事。 – >如果你想保持每小时的完整备份,你也可以考虑将恢复模式设置为“简单”。

    在我看来,更好的办法是在凌晨做一个完整备份,然后每小时做一次事务日志备份。 它应该快得多,你可以恢复到任何你想要的时间点。 而且你的.trn文件不会增长太多…

    希望这可以帮助。

    好。 因为如果您的恢复模式设置为“完全”,而且您不使用SQL备份(而不是备份服务器)备份“事务日志”,则事务日志将继续增长,直至消耗完所有可用磁盘空间。 (我曾经看到一个较小的同事在系统驱动器上安装SQL Server,从不备份事务日志,它吃了Windows 。)

    是的,它也会恢复到特定的时间点。 下到分钟。 像Twinkles说的,是的,人们扔桌子之类的。

    我不知道你在整个数据库的每小时备份中使用了什么,如果它是和你在整个机器上使用的产品相同的产品。 如果是这样,恢复不支持不支持SQL的备份解决scheme。 例如,VSS复制MDF和LDF文件所花费的时间可能导致内部时间戳不匹配。

    我们也pipe理好几个ERP系统。 而且问题往往是在晚上经常有长时间运行的批处理作业与其他系统同步数据。 他们有时需要一个小时或更多。 所以,如果发生崩溃,您要做的就是跳转到您有一致数据的地方。 (这意味着两个批处理作业之间的正确关系。)如果您只看时间,您可能并不总是知道数据库的确切状态。

    但当然这取决于情况。 如果你没有任何自动化的工作等,你可以完全正确的小时备份。

    为什么要这样做有几个原因:

    1. 数据库系统通常很繁忙,可能每秒处理数千个事务。 数据可以分散在不同文件系统上的多个文件中。 确保数据库在恢复后处于一致(可用)状态并不是微不足道的。 如果您的备份解决scheme能够胜任这项工作,那么您的备份解决scheme就更好了。
    2. 举个例子:有人误删了重要的数据表。 如果您拥有具有时间点恢复function的数据库备份,则可以快速恢复数据,而不必恢复整个系统。
    3. 如果数据库处于完全恢复模式,SQL Server的事务日志将会增长。 事务日志中的存储空间只有在事务日志已经备份的情况下才能被重用。 如果您没有定期备份事务日志,则文件系统将被填满,直到没有剩余空间。 此时一切都将立即停止 ,因为没有新的交易可以开始。

    当你的数据库增长超过你能够在一小时内备份的时候,你需要一个不同的模型。

    数据库的完全备份会截断你的日志,但是它需要“SQL感知”,因为在这种情况下,它是备份软件告诉SQL服务器它备份了什么和截断什么。

    正如其他人提到的,如果您拥有“完整”恢复模式中的数据库,那么事务日志将无限增长,直到您进行完整的SQL感知备份。

    恢复真的是这里的问题,而不是备份。 这不是一个技术性的决定,它是一个商业决定!

    如果您的企业主可以丢失一小时或更多的数据库事务(这可能非常困难或不可能重做!),那么您的模型就可以工作。 如果系统closures几个小时,而您从备份还原整个数据库,那么您的模型可以正常工作。

    但是,如果您的企业将ERP系统视为其运营的关键资产(不是全部?),那么为您的关键服务设置最大可接受的恢复时间(又名RTO,恢复时间目标)将是一个业务决策。

    另外,企业所有者或系统利益相关者需要定义事件中他们愿意冒失的风险,即RPO(恢复点目标)。

    如果你问他们的答案可能是“没有数据可以丢失!ERP系统必须每周7天,每天24小时提供!”……我们都知道这是不太可能成本效益的。 如果你把它们与build立这样一个完全冗余的,不间断的系统相关联的成本,他们会拿出更合理的数字..;)

    重点是,如果您可以避免丢失任何交易,您可能会节省数百或数千的工作时间。 这相当于任何公司的巨额储蓄,并随着公司的规模而增长。

    每个人对此都有很好的回应,但是我还想补充一点,那就是……或者两个。

    了解SQL Server恢复模型的细节和数据丢失的业务需求都非常重要; 但是,在这种情况下,您必须了解备份产品如何与SQL Server配合使用。 (根据上面的注释,这听起来像是通过VSS副本备份磁盘卷,这意味着SQL Server备份可能也可能不需要此外)。

    最近对一个类似的产品进行了评估,您可能需要询问的一些重要问题是:

    • 如何在完全恢复的数据库中执行恢复?
    • 初始备份如何处理完全恢复的新数据库?
    • 备份产品是否需要SQL Server日志备份还原到某个时间点? (就我而言,答案是肯定的。)
    • 除了正常的SQL负载之外,您的存储基础架构能否处理VSS副本/差异(以给定间隔)的数据量?

    希望这是有帮助的。

    我们团队在最近的评估中获得的经验为上述问题提供了一些非常有趣的答案。 有一点可以肯定,备份对于我们来说是一个VSS备份产品。

    正如其他人已经说过的那样,如果您使用第三方工具来备份/快照虚拟机或存储,您仍有可能无法获得有效的备份。 所有pipe理SQL Server备份的第三方工具都将使用VSS实现并连接到SQL Server。 它这样做是为了要求SQL Server将所有的I / O静止在数据文件中,这样就可以获得一致的快照。 如果没有,那么你可以有许多交易在不同的状态,恢复将不知道这些交易可以向前或向后滚动。

    我还没有和每个第三方的虚拟机/存储快照工具一起工作,但是我曾经工作过的那些人从来没有能够快照存储系统数据库所在的存储 – SQL Server不能让这些数据库停顿。 他们都以stream的方式备份这些数据库 – 即…发出BACKUP DATABASE命令,然后捕捉备份文件本身。

    除此之外,正如许多人所说,如果您处于FULL恢复模式,并且不会定期发出BACKUP LOG语句,则事务日志将继续增长,直到磁盘上没有剩余空间。

    真正的问题你需要问,而我可能已经错过了上面…你已经成功地从这些备份中恢复了很多次,并且你对这些恢复中的数据的一致性感到满意。 就个人而言,即使这对我来说还不够,它仍然感觉像是一个骰子的滚动,这是一个良好的数据库pipe理员在备份和恢复时从来没有采取的。

    认识到事务日志不仅仅是一个恢复机制。 正确的日志维护在总体数据库性能(即事务吞吐量)方面也起着至关重要的作用。

    经常备份你的日志文件会做几件事情:

    1. 它减less了物理日志文件中对性能有利的VLF计数。
    2. 如果您需要恢复数据库,则可以更好地使用日志备份。
    3. 这比完整的备份要快得多

    如果您可以每小时进行一次完全备份,那么我不确定您将从更频繁的日志备份中受益多less。 毕竟,据我所知,完整备份还将备份尽可能多的日志,以确保完整的恢复。

    另一方面,如果您的应用程序在每小时完整备份之间生成大量事务,那么这可能会解释为什么原始开发人员build议更细化的日志维护。 很多交易可能会增加日志中的VLF计数,这可能会导致性能损失,直到日志被截断。 我已经看到这表示为应用程序内的一个“查询超时过期”错误(不久之前挂起)。

    有关事务日志维护的build议在本文中更好地描述了改善事务日志吞吐量的8个步骤 。 此外,这篇文章“有效数据库维护的重要技巧”提到了一个有点武断的VLF计数(<200),这对我来说工作得非常好。

    其他人已经给出了大部分的超时备份等原因。似乎有一些疑问,为什么这是你已经备份服务器的好策略。

    有几个很好的理由已经出现在我的上面。 如果你的第三方应用程序未能进行备份,你可以恢复? 您是否尝试恢复备份? 怎么样一个新的服务器,你刚刚从你的模板(认为DR)? 那么你的域名上的另一台服务器有不同的sorting规则呢? 或SQL实例?

    除了有时您的第三方应用程序不是最快的恢复方式之外,我没有理由进行冗余备份。 有时您的第三方应用程序保存的存储空间也受到影响,或者由于其自身原因而损坏。

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.