关闭

SQL 问题与解答:维护日志和索引

发表于:2010-12-06 09:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Paul S. Randal    来源:51Testing软件测试网采编

  切勿破坏这个结构链

  问:我已经为数据库定义了备份策略。 我的计划涉及事务日志备份,这样我们执行灾难恢复时几乎不会丢失数据。 我研究了可能会遇到的一些问题,并几次读到需要注意不能破坏日志备份链。 您能解释一下这是什么意思以及在何种情况下会破坏它吗?

  答:问得好,许多人都忽略了这个问题。 日志备份链(有时简称为日志链)指的是一系列不间断的事务日志备份,覆盖的时间段从最近的数据备份(完整备份或差异备份)到要还原该备份时。 还原序列的示例如下:

  · 最近的完整数据库备份

  · 然后是最近的差异数据库备份

  · 最后是所有事务日志备份

  大多数人会保留更多事务日志备份,一旦某个备份被破坏,您必须还原最近的数据备份。 在我去年撰写的两篇《TechNet 杂志》文章“了解 SQL Server 备份”和“利用备份进行灾难恢复”中,可获得有关备份和还原的更多信息。

  如果任何必要的日志备份被损坏或不能按照所选序列还原,则日志备份链会被破坏并且无法还原被破坏的时间之前的备份。 如果只损坏了其中一个日志备份,您可能会使用 WITH CONTINUE_AFTER_ERROR 选项强制其进行还原。 这会强制还原已损坏的事务日志记录,从而导致数据库损坏。 我对是否强制进行此类还原也拿不定主意。

  可能会导致必要的日志备份不可用的一项操作是“带外”日志备份,该操作不能确保会保留日志备份。 例如,您可能通过这种方式向开发人员提供副本。 该日志备份是日志备份链的一部分,因为它是唯一包含在前一个日志备份后生成的日志记录的日志备份。

  也就是说,除非您使用 WITH COPY_ONLY 选项执行日志备份,并允许下一个 日志备份有效地备份同一组日志记录才行。 请参见我的博客文章“BACKUP WITH COPY_ONLY”,了解有关如何避免损坏备份链的详细信息。

  损坏日志备份链的操作的一个更常见示例是阻止您在日常操作期间执行事务日志备份。 这些类型的操作包括:

  · 切换到 SIMPLE 恢复模式,然后返回 FULL 或 BULK_LOGGED

  · 使用 BACKUP LOG … WITH NO_LOG 或 TRUNCATE_ONLY 选项将日志转储到 SQL Server 2005 和早期版本中

  · 从数据库快照还原数据库

  您需要在上述任何操作后执行数据备份(完整备份或差异备份)以允许日志备份继续。 这称为“重新启动日志备份链”。

  最后一件事:与一般认识相反,执行完整备份或差异备份不会 损坏日志备份链,事实上,不会对日志备份产生任何影响。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号