浅谈DB2数据库的备份与恢复(下)

二、DB2数据库的恢复

DB2数据库提供了三种恢复类型:

1、崩溃恢复(crash recovery):崩溃恢复是用来在失败后立即进行恢复,把数据库恢复到一个事务一致状态,此状态的所有更改只有在执行提交事务后才生效。崩溃恢复使用命令 RESTART 执行。

2、备份恢复(restore recovery):备份恢复可从上一次所作的备份中恢复数据库的内容。备份恢复使用 RESTORE 命令执行。

3、向前恢复(forward recovery):在一个数据库从备份中恢复了以后,向前恢复可以重新执行那些在备份后才更改了数据库的操作。在这种情况下,数据库可以恢复到备份和当前时间之间的任何时间断。向前恢复使用 ROLLFORWORD 命令执行。

崩溃恢复和备份恢复对任何数据库都适用,而向前恢复只有在数据库被指定可以使用此功能是才使用。表一显示了此功能带来的影响。

表一 数据库能否进行向前恢复带来的影响

如果不允许进行向前恢复如果允许进行向前恢复

在发生失败后,可以把数据库恢复到失败前与最后一次事务一致的状态。

同样,也支持恢复到与最后一次事务一致的状态。

可以把数据库恢复到任何有效的备份状态,但是不能重新执行发生在备份之后的事务。

可以把数据库恢复到任何有效的备份状态,并且可以重新执行从发生失败到当前为止提交的事务。

只能在没有任何应用连接到数据库时进行备份(这称为脱机备份)。

可以在应用连接到数据库时和事务正在处理时进行备份(这称为联机备份)。同样支持脱机备份。

每一个备份都必须包含整个数据库的当前状态。

一个备份可能包含整个数据库的当前状态,或者是一个或多个表空间。数据库的表空间可以单独地备份和恢复。

可以通过把数据库配置参数 LOGRETAIN 或 USEREXIT 设置为 YES 来使向前恢复生效。日志会由于生成新的文件而不断增加,并且它们是无限制的。在这种情况下,必须采取一些办法把旧的日志文件保存到文档中,以防止文件系统被日志占满。

1、RESTART 命令

此命令是当一些操作还在处理时发生断电或软件崩溃后要发出的第一个命令。它建立一个数据库的连接,并使用日志来把数据库恢复到事务一致状态。所有在失败发生前由提交操作所引起的数据库更改都会生效。所有在失败前被撤消的操作和失败时正在处理的事务对数据库进行的更改都被撤消。

下面是 RESTART 命令的例子:

RESTART DATABASE mydb

2、RESTORE 命令

此命令使用存储在备份中的内容来恢复数据库的内容。RESTORE 命令可以创建一个新的数据库。RESTORE 命令需要 SYSADM,SYSCTRLSYSMAINT特权。RESTORE 命令要使用的备份可能包含整个数据库或一组表空间。恢复整个数据库必须脱机进行,恢复表空间可以联机进行,也就是在还有应用连接到数据库时进行。RESTORE 命令语法为:

RESTORE DB 目标数据库别名 [TABLESPACE 表空间名] [FROM 介质名] [TAKEN AT 时间]

下面是一些 RESTORE 命令的例子:

(1)从一个特定目录(/backup/mydb)中的备份来恢复 mydb 数据库。如果 mydb 不能够进行向前恢复,数据库将被恢复到备份时的状态,而且可以立即使用。如果能够进行向前恢复,数据库会被置为向前挂起(pending)状态,直到它被执行向前恢复命令之后才能被使用。

RESTORE DATABASE mydb FROM /backup/mydb

(2)下面的命令是对数据库 mydb 进行恢复,并且在外部指定不进行向前恢复,数据库可以被立即使用。

RESTORE DATABASE mydb FROM /backup/mydb WITHOUT ROLLING FORWARD

(3)下面的例子是从一个指定的目录(/backup/mydb)中来恢复 mydb 数据库的一个指定的表空间,此恢复要使用指定的日期和时间:

RESTORE DATABASE mydb TABLESPACE ONLINE FROM /backup/mydb TAKEN AT 20000926201226

3、ROLLFORWARD 命令

ROLLFORWARD 命令是在执行了一个 RESTORE 命令之后执行的,以便对数据库或它的表空间进行向前恢复。ROLLFORWARD 命令需要SYSADM,SYSCTRLSYSMAINT 特权,并且数据库必须能够进行向前恢复。

ROLLFORWARD 命令可以适用于整个数据库或是一个或多个表空间,它们的状态此时都是向前挂起(pending)的。如果向前恢复整个数据库,此过程必须是脱机的,而且数据库可以被恢复成备份时间和当前时间之中的任何时间段。如果只向前恢复单独的表空间,此过程既可以是联机的也可以是脱机的,但是必须把表空间向前恢复到当前时间后,再重新执行所有引起更改的提交操作,这样可保证被恢复的表空间和数据库中的其它部分保持一致。ROLLFORWARD 命令语法为:

ROLLFORWARD DATABASE 数据库名 [TO {时间,END OF LOGS}][TABLESPACE {ONLINE,表空间名}]

下面是一些 ROLLFORWARD 命令的例子:

(1)此例子使 mydb 数据库恢复到当前时刻。字句 AND STOP 是让数据库不被置为 ROLLFORWARD PENDING 状态,并且可以被存取:

ROLLFORWARD DATABASE mydb TO END OF LOGS AND STOP

(2)下面的例子向前恢复 mydb 数据库,并重新执行在指定日期和时间之前提交的所有事务:

ROLLFORWARD DATABASE mydb TO 2000-09-26-10.3059 AND STOP

(3)下面的例子只把数据库 mydb 中的某一表空间向前恢复。此命令是在执行了一次表空间级别的恢复后发出的,它只适用于被恢复的表空间。此命令指出向前恢复是联机进行的,并且要进行到当前时间(日志末尾):

ROLLFORWARD DATABASE mydb TO END OF LOGS AND STOP TABLESPACE ONLINE

注:如果数据库中有一些列是 LOB 数据类型的,并且它们被创建带有 NOT LOGGED 选项,那么对这些列进行的更新操作就没有被记录到日志中,向前恢复就不会对这些列进行操作。如果在向前恢复过程中,遇到了没有日志的列,它们的值会被置为十六进制的0。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
<p> <span style="font-size:14px;color:#337FE5;">【为什么学爬虫?】</span> </p> <p> <span style="font-size:14px;">       1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!</span> </p> <p> <span style="font-size:14px;">       2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站</span> </p> <p> <br /> </p> <span style="font-size:14px;color:#337FE5;">【课程设计】</span> <p class="ql-long-10663260"> <span> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 网络请求:模拟浏览器的行为从网上抓取数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 </li> <li class="" style="font-size:11pt;color:#494949;"> Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 </p> <p style="font-size:11pt;color:#494949;">   </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <br /> </p> <p> <br /> </p> <p> <span style="font-size:14px;background-color:#FFFFFF;color:#337FE5;">【课程服务】</span> </p> <p> <span style="font-size:14px;">专属付费社群+定期答疑</span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"><br /> </span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"></span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

smallxia

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值