MSSQL日志序列号的还原操作是怎样的
Admin 2022-07-28 群英技术资讯 302 次浏览
Microsoft SQL Server 事物日志中每个记录都由一个唯一的日志序列号(LSN)标识,如果 LSN2 大于 LSN1,则 LSN2 所标识的日志记录描述的更改发生在日志记录 LSN1 描述的更改之后。
顺序还原期间,还原完整备份后,数据被还原到进行备份的时间点相对应的 LSN,利用差异和日志备份可以将还原的数据库推到稍后的时间,该时间与一个更高的 LSN 相对应。
还原计划中,最重要的日志序列号(LSN)是第一个和最后一个 LSN。
first_lsn或FirstLSN:备份集中第一个或最早日志记录的日志序列号。对于数据备份和差异备份,第一个 LSN 标识的是需要此备份执行恢复的最早日志记录,对于日志备份,第一个 LSN 标识的是备份中包含的第一个日志记录。
last_lsn或LastLSN:备份集之后的下一条日志记录的序列号。最后一个 LSN 标识的是备份结束后的下一个日志记录。对于数据备份和差异备份(以及包含大容量日志操作的日志备份)。必须至少前滚到此 LSN,否则,还原期间复制的数据会出现不一致。对于日志备份,它包含的日志记录最多到(但不包含)此LSN。
日志序列号和数据备份或差异备份
对于数据备份或差异备份,first_lsn 和 last_lsn 之间的日志数据包含在备份中,这使得使用该备份(而无需日志备份)就可以恢复到 last_lsn。
对于数据备份或差异备份,如果按还原顺序使用备份,则 last_lsn 可能是最早的恢复点,如果需要更早的恢复点,则必须使用更早的备份。
当计划在还原数据备份或差异备份后使用哪个日志备份前滚时,通常将从该数据备份或差异备份之后的第一个日志备份开始,检查备份的属性时,你就会发现这样一个日志备份,其 first_lsn 小于或等于数据备份或差异备份中的 last_lsn,并且 last_lsn 大于数据备份或者差异备份中的 last_lsn。
日志序列号和日志链中的日志备份
新的日志链将随顺序局创建后的第一个完整数据库备份而启动,或在从简单恢复模式切换到完整或大容量日志恢复模式后启动。
first_lsn 和 last_lsn 用于将日志备份连成一个连续的序列(即日志链)。可以使用连续的日志备份序列前滚数据库(可以从最近的数据库备份或者差异备份前滚,也可以从丢失或损坏的数据库备份和差异备份的早期备份前滚)。
在日志备份中,first_lsn 是备份中第一个日志记录的 LSN,从此日志记录开始,日志备份最多包含到 LSN 为 last_lsn 的日志记录(但不包含该日志记录)。而且仅当早期备份(Backup_A)中的最后一个日志记录的 LSN 大于或等于后期备份(Backup_B)的第一个日志记录的 LSN 时,这两个日志备份才是连续的;也就是 Backup_A.last_lsn >= Backup_B.first_lsn。如果不是这样,这两个备份之间将存在空白。
这些 LSN 之间关系的意义如下:
A.last_lsn = B.last_lsn:则 B 通常是紧跟着 A 后进行的日志备份
A.last_lsn > B.last_lsn:存在重叠。重叠通常是由于创建仅复制日志备份或在时点还原后备份第一个日志引起的。重叠可能会涉及不同的恢复分叉。
日志链断开的原因
通常,SQL Server 数据库引擎会防止日志备份序列中出现空白,从而使日志链保持完整。但是,如果数据库管理员先将恢复模式更改为简单恢复模式,然后再将其改回完整或者大容量日志恢复模式,会使日志链断开。
由于日志链已断开,因此无法在涉及简单恢复模式的恢复模式中前滚。更改到完整或大容量日志恢复模式后,应使用新的差异基准或差异基准集。此外,也可以使用差异备份填补空白。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
前言上三篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符、联合运算符的优化技巧。本篇我们分析SQLServer的并行运算,作为多核计算机盛行的今天,SQLS...
SQL HAVING 子句使你能够指定过滤条件,从而控制查询结果中哪些组可以出现在最终结果里面。WHERE子句对被选择的列施加条件,而 HAVING子句则对 GROUP BY 子句所产生的组施加条件。
这篇文章主要介绍了SqlServer编写数据库表的操作方式(建库、建表、修改语句)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
本文主要介绍了SQL解决未能删除约束问题drop constraint,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要介绍了Sqlserver 自定义函数 Function使用介绍,在sqlserver2008中有3中自定义函数:标量函数/内联表值函数/多语句表值函数,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008