SQL SERVER备份与恢复,不理解!

书上有一个备份策略是这样的:完整数据库备份1---事务日志备份1---事务日志备份2----差备1----事务备3---事务备4----差备2----事务备5---事务备... 书上有一个备份策略是这样的:
完整数据库备份1---事务日志备份1---事务日志备份2----差备1----事务备3---事务备4----差备2----事务备5---事务备6---完备2---事务备7
我假设情况1:在事务备7完成后的20分钟数据库挂掉,那么恢复过程(要求无任何数据丢失)是
A.搞到尾日志 B.恢复完备2 C.恢复事务备7 D.恢复尾日志 不知道这种恢复方法对不?
我假设情况2:在事务备5完成后的20分钟数据库挂掉,那么恢复过程(要求无任何数据丢失)是
A.搞到尾日志 B.恢复完备1 C.恢复差备2 D.恢复事务备5 E.恢复尾日志 不知道这种方法对不对,应该是对的。如果是对的,我就有个疑问,根据事务日志备份的定义是仅仅备份上次完备或日志备份后的记录,那么步骤D中的事务备5记录的时间段应该是“事务备4后到事务备5之间的啊”,但是我在步骤C中已经把数据库还原到了最新的差备,为什么在步骤D中还要去对最新差备之前的去做操作呢???

还有书上一个例子:

时间 事件
上午8点 备份数据库以创建完整数据库备份
中午 备份事务日志
下午4点 备份事务日志
下午6点 备份数据库以创建完整数据库备份
晚上8点 备份事务日志
晚上9点45 出现故障
若要将数据库还原到晚上 9:45(故障点)时的状态, 可以使用以下两种备选过程:
备选过程 A:使用最新的完整数据库备份还原数据库
1. 失败时创建当前活动事务日志的结尾日志备份。
2. 不要还原上午 8:00 的完整数据库备份。 相反,应还原下午 6:00 的 这一时间更近的完整 数据库备份,然后应用晚上 8:00 的日志备份和结尾日志备份。

备选过程 B:使用较早的完整数据库备份还原数据库(如果出现问题,使您无法使用下午 6:00 的完整数据库备份,则此备选过程将十分有用。 此过程比从下午 6:00 的完整数据库备份还原 所需的时间长。)
1.失败时创建当前活动事务日志的结尾日志备份。
2. 还原上午 8:00 的完整数据库备份,然后按顺序还原所有四个事务日志备份。 所有完成的事务都将前滚到晚上 9:45。
(此备选过程指出了冗余安全性,该安全性通过维护一系列完整数据库备份中的事务日志链备份来获得。)
我的问题:对于备选过程A我能完全理解。对于备选过程B,第一步还原上午8点完备数据库我能理解,第二步他说顺序还原四个事务日志备份(他应该指的是如下四个:中午、下午4点、晚上8点、尾日志 ),我就不理解了,他先还原中午和下午4点,这时数据库已经恢复到下午4点状态。但是晚上8点的事务日志中不是记录了下午6点完备后到晚上8点这个时间段的操作(我从事务日志定义中理解到只要进行了一次完备,接着进行事务日志备份,事务日志备份所记录的就是完备之后到事务日志备份之间时间段的操作),那恢复晚上8点的事务日志还有什么意义,因为少了下午4点到下午6点的事务日志备份,下午4点到下午6点这2个小时的操作就没了吗?其实这个问题和上面那个类似,不知道是不是本人理解事务日志概念有偏差,请高手详细解答,有提高悬赏,谢谢!也可留下联系方式探讨,谢谢!
展开
 我来答
cjsaohan
2013-08-22 · TA获得超过204个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:232万
展开全部
SQL Server中的日志以LSN来区别每一条事务,日志备份只复制上次日志备份以来的所有日志记录,也就是上次日志备份后新产生的LSN号。
如果可以在发生严重故障后备份活动日志(尾日志),则可将数据库一直还原到没有发生数据丢失的故障点处理。但是大量做日志备份时,恢复备份时需要严格按照日志备份产生的顺序依次恢复,中间不能有任何日志备份的缺失或跳跃,所以日志备份做的越多,还原时间越长,管理复杂性越高。
正是因为这个情况,所以才有差异备份,而差异备份是备份上次完整备份以后数据库整的整体差异。
如上面的情况,在差异备份后的日志备份,如果有事务穿越了差异备份的时点,在有后续日志备份的情况下,也可以正常达到提交或回滚的目标。

根据这两个原则,你上面所列的情况在情理之中。
szm341
2013-08-22 · TA获得超过6725个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5087万
展开全部
首先提一个细节上的小问题,你第一个事例的第二个操作中C步骤
应该是恢复差备1和差备2,差异备份与日志备份一样,要按次序不能跨越
而你的第一个疑问,关于“事务备5”确实是“事务备4后到事务备5之间的”日志备份
因此,你也可以完全无视差异备份,全程由完备+事务日志来还原
之所以用差异备份,ls的已经算是回答了吧,我也曾经请教过csdn上的前辈,
大致可以理解为差异备份为了简化日志备份的还原的复杂性

那为什么差异备份还原后可以继续事务日志还原呢?
因为首先无论差异备份还是日志备份,都记录有相同最近一次完备的LSN(涉及你的第二问)
然后符合A.last_lsn >= B.first_lsn以及B.last_lsn > A.last_lsn的条件
这样就算是lsn的连续了,当然可能有部分重叠,但是不把lsn接连上的话下面的尾日志将无法还原

这样应该差不多明白了吧,第二个问题
我觉得应该是错的,我上面有提到,无论差异还是日志备份,都会记录相同的最近一次完备的LSN
那么晚8点的日志备份,它所记录的应该是下午6点的完备LSN,根本不能参与上面文件的还原操作
关于这个问题,你可以自己做测试实践一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式