2、删减事务日志 我在联机环境中见过的最普遍的设置之一就是下面的数据库维护计划表: 日志备份 索引重建 全备份 删减日志 每三十分钟做日志备份 在这里实际完成的是索引重建,而且执行了全备份。到目前为止,一切还算正常,不是吗?实际上,日志被删减会打断日志链,这会使所有日志备份变得无用,直到下次执行全备份。这是因为日志序列号(Log sequence Number,简称LSN)链被删减日志操作中断了。 无论什么时候事务出现时,事务日志中就会写进去一个日志序列号。
在执行备份时,第一个日志序列号和最后一个日志序列号都包含在备份中,被写到了日志备份的头位置。在日志被恢复时……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号

TechTarget
官方微博

TechTarget中国
2、删减事务日志
我在联机环境中见过的最普遍的设置之一就是下面的数据库维护计划表:
日志备份
索引重建
全备份
删减日志
每三十分钟做日志备份
在这里实际完成的是索引重建,而且执行了全备份。到目前为止,一切还算正常,不是吗?实际上,日志被删减会打断日志链,这会使所有日志备份变得无用,直到下次执行全备份。这是因为日志序列号(Log sequence Number,简称LSN)链被删减日志操作中断了。
无论什么时候事务出现时,事务日志中就会写进去一个日志序列号。在执行备份时,第一个日志序列号和最后一个日志序列号都包含在备份中,被写到了日志备份的头位置。在日志被恢复时,日志备份中的日志序列号必须是连续的。如果他们不连续,那么SQL Server就认为日志记录丢失了,日志备份不能恢复了。
在这种情况下,全备份可以恢复到数据库。不幸的是,所做的日志备份没用了。这是因为包括在事务日志备份中的最后一个日志序列号与在日志删减后的第一份事务日志备份中的日志序列号不相同,因为删减日志命令改变了日志的序列号。
我所见到的另一种十分常见的场景是删减日志,然后执行全备份。这中做法会好一点,但是也强不到哪里去。如果全备份被破坏的话,任何在删减(truncate)语句和下一次全备份之间的事务都不能被恢复。这是为什么呢?因为既然删减日志步骤会重置日志序列号,你就不能从两天前恢复全备份,然后向前滚动所有事务日志。是的,把日志转换为简单恢复模式做的实际也是一样的事。
如果你打算删减你的事务日志,以便你可以进行收缩,那么请将屏幕向上滚动,把上面的内容再读一遍。
现在,如果你不需要完整的事务日志记录,而是让数据库完全恢复,那么你应该把数据库改为简单恢复模式。这种方式的事务日志不会增长,因为日志条目将被覆盖,而不是保存到下一次日志备份。
作者
翻译
TechTarget特邀编辑。2003年入软件行业,熟悉软件过程所有环节,对机构信息化的各方面有深入理解和实践经验。现就职于某互联网创业公司,目前关注互联网分布式系统架构和机器学习。喜欢传统文化社科哲学(尤喜《周易》、《老子》),喜健身喜抓举(具备抱人引体向上的能力),喜欢中国象棋(具备盲棋1对2的能力)。
相关推荐
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。
-
Notre Dame对云端SQL Server性能基准的探索实践
确立SQL Server的性能基准,对于云端迁移来说是至关重要的第一步,一位来自于University of Notre Dame 的DBA表示,他正在试图通过数据库监控软件,找出SQL server的性能基准。
-
DBA必须掌握的数据库恢复管理技术
如果没有备份副本,数据库管理员就无法还原数据库,所以DBA在恢复之前倾向于考虑备份是合乎逻辑的。 但是,对我来说,这种逻辑一直是错误的。
-
横向扩展SQL Server应用程序:提高工作负载的选项
SQL Server管理员面临的最大挑战之一就是扩展数据库以适应更为繁重的数据处理工作负载。然而事情越发复杂的是,虽然Microsoft提供了许多不同的SQL Server可扩展性选项,但它们并不都适合于每种情况。