结尾日志备份

在大多数情况下,如在完成恢复模式或者大容量日志恢复模式下,SQLServer数据库要求管理员备份事务日志的结尾部分以获得尚未备份的日志记录。这个 在还原操作之前对日志尾部执行的日志备份就叫做结尾日志备份。对于SQLServer数据库来说,在事务日志恢复之前进行事务日志的尾部备份是非常必要 的。因为结尾日志备份作业可以防止用户修改数据的丢失并最终确保日志链的完整性 。在利用事务日志将数据库恢复到某一个指定的点,如数据库故障点的时候,结 尾日志备份是恢复计划中的最后一个相关备份。如果在还原之前无法备份日志的尾部,那么就只能够将数据库恢复为故障发生之前创建的最后一个备份。而不能够恢 复到故障发生的那一点。所以说,结尾日志备份对于SQLServer数据库非常的重要。

 

具体的来说,如果遇到如下两种情况,需要先对马上对事务日志进行尾部备份。

  一是需要对数据库进行还原操作,而且是要还原到最近到的一个点时,那么需要先对数据库进行事务日志尾部备份。即在数据库处于联机状态时,如果数 据库管理员需要对数据库进行的下一个操走就是还原操作,那么就需要在还原操作之前进行事务日志尾部备份。也就是说,在还原操作之前才能够进行事务日志尾部 备份 ,即在事务日志备份备份与数据库还原之间不能够再进行任何的数据库修改作业。否则的话在还原后这个修改会丢失。另外需要注意的是,为了出现一些不必要 的错误,最好在备份事务尾部日志的时候,采用N ORECOVERY选项。这个选项主要是为了确保数据库事务日志尾部备份之后数据库不能够再被修改。也就是 说,可以保证事务日志尾部备份到数据库还原中间的时间间隔之内,不再发生任何的数据库更改作业。以确保在利用事务日志尾部备份进行数据库还原的时候,能够 还原到一个最近的时点。 而不 会有任何数据的丢失。这是在最正常的情况下对事务日志的尾部进行备份。

 

二是需要注意,有时候可能由于一些特殊的原因,数据库已经处于脱机状态,或者数据库重新启动后已经无法启动了,此时数据库管理员仍然要尝试着进行结尾日志 备份。数据库管理员需要注意的是,此时数据库事务日志结尾备份不一定能够成功,但是数据库管理员在恢复数据库之前仍然要做一个最后的尝试。也许运气好的 话,事务日志尾部备份能够成功进行。一般情况下,如果遇到数据库脱机或者无法启动时,即数据库发生故障时,只有当当前的事务日志文件没有受到损坏、数据库 处于支持结尾日志备份的状态并且不包含任何大容量日志更改时,结尾日子会备份才能够同时成功。也就是说,当数据库损坏时,只有同时满足三个条件,分别为日 志文件没有损坏、数据库处于支持结尾日志备份的状态、不包含任何大容量的日志更改,事务日志尾部备份才会成功。但是在实际工作中,发生这种情况时,要让数 据库管理员判断数据库当前的状态是否符合这三种情况,往往具有一定的困难,甚至是一种苛刻的要求。所以笔者的建议是,数据库管理员如果遇到这种情况,先不 管三七二十一,先对事务日志的尾部进行备份。另外需要注意的是,此时即使能够正确备份事务日志结尾部分,也有可能其中的部分数据不可用。即仍然有可能存在 部分数据的丢失。虽然这是数据库管理员极不愿意看到的,但是这个事实毕竟存在。数据库管理员应该正确面对。在数据库损坏时如果要进行事务日志尾部备份,则 需要采用比较特殊的选项。如一般需要在备份语句中采用NO_TRUNCATE选项,否则的话备份不会成功。

 

 三、 何时不需要采用结尾日志备份?

  从上面的分析中可以看出,并不是在任何场合下都需要使用结尾日志备份。在一些特殊点场合下,可能进行结尾日志备份也是一种浪费。为此作为数据库 管理员,要有这个能力来判断这个结尾日志备份作业时否是必须的。从数据库性能或者其他的角度考虑,只有在必要的时候才对数据库进行日志结尾备份。根据笔者 的了解,一般情况下如果遇到如下几种情况,就不要进行日志结尾备份。

  一是如果要将数据库恢复到先前日志备份中包含的某个时点。也就是说,如果不需要将数据库还原到故障发生点或者用户指定的任何一个时点,那么就可 以不备份日志结尾部分 不过需要注意,此时可能会丢失最近对数据库所作的更改。这也是SQLServer数据库备份与还原的一个特性。在数据库中,支持将 命名标记插入到特定的事务日志中。在恢复的时候,就可以选择恢复到那一个标记。不过在采用事务标记的时候,数据库管理员必须清晰的认识到,事务标记会消耗 日志空间,并会对数据库的性能产生不利的影响。所以一般只有在必要的情况下,才会启用事务标记。另外需要注意的是,如果一个事务标记跨越同一个数据库服务 器或者不同服务器上的多个数据库时,这些标记将记录在所有受影响的数据库的日志内。此时显然会在很大程度影响到数据库的性能,并浪费不少的事务日志的空 间。故除非有特殊的必要,不要启用事务标记的功能。有时候我们在培训的时候,由于对于数据库性能的要求并不是很高,也不用担心事务日志的大小,所以比较喜 欢使用事务标记。以去除一些实验过程中的垃圾数据。

  二是将数据库移动到新的位置,即在不同的数据库服务器之间进行数据库还原的时候,也没有必要进行结尾日志备份作业 。另外在完整覆盖原有数据库的时候,也不需要再继续进行结尾日志备份了。

  总之,在大部分情况下,如果要对数据库进行还原操作,都需要先对数据库继续结尾日志备份操作。而只有在一些个案中,如通过事务标记来恢复数据库 或者覆盖数据库作业中,才不需要采用结尾日志备份。如果数据库管理员由于各方面的限制,不知道是否需要进行结尾日志备份的时候,那么笔者建议各位管理员, 最好还是执行一下结尾日志备份作业为好。毕竟相对于数据库性能而言,这个数据安全还是第一位的。况且,如果将这个作业和数据库还原作业放到用户使用数据库 表较少的时刻进行,也不会对其他用户的访问产生很大的负面影响。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值