实战备份与恢复

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库恢复的几种方式

一、崩溃恢复

1.工作原理从数据库日志控制文件中获取不一致起点信息,并根据日志内容对所有在不一致起点后成

功提交事务进行再应用,而对其他未完成的事务进行回滚,从而把数据库带回可用、一致状态。

2.执行方式(假设数据库已处于不可用、不一致状态)

A.自动- 数据库参数AUTORESTART=ON(缺省)。应用程序连接将导致数据库重新启动而完成崩溃恢复。

B.手动- 数据库参数AUTORESTART=OFF。这时需要手动执行重起数据库命令restart database。如果在崩溃前数据库I/O已处于写暂停状态(通常用在镜像分离操作前)时,可以用指定选项write resume 来移除数据库中表空间的写暂停状态。

二、完全恢复(版本恢复)

1、工作原理

Tips: 全备份和版本恢复的执行时间可能很长,这需要您在做备份和恢复计划的时候,必须充分考虑这个因素。

2、执行方式–根据日志设置方式的不同有以下两种:

A.循环日志without rolling forward选项来清除数据库的ROLLFORWARD PENDING状备份和恢复都必须离线进行。执行DB2命令(backup/database)来进行全备份和版本恢复。

B.归档日志备份可以在线,而恢复必须离线进行。在执行DB2命令(restore)进行恢复的时候,需指定态。

三、数据库前滚恢复(时间点恢复)

1、工作原理

2、执行方式

数据库前滚恢复需要启用归档日志并建立数据库备份。数据库前滚恢复必须离线进行。在执行不带without rolling forward选项的DB2命令restore后,数据库处于前滚暂挂状态(ROLLFORWARD PENDING),这时执行前滚恢复命令rollforward 将使数据库恢复至备份后的某一特定时间点或者日志末尾。

Tips: 1.表空间的前滚恢复将在部分恢复里进行介绍。2.必须保留备份后到特定时间点之间所有的日志文件。

四、表空间恢复(部分恢复)

1、工作原理原理请参考前面的前滚恢复,区别是备份和恢复的对象是表空间。

2、主要特点

A.相对数据库备份,表空间备份和恢复在时间上占有优势,并且方法灵活。

B.在大型数据库系统中,常规数据、索引、长字符数据、LOB型数据通常放在不用的表空间里,为了确保数据的一致性需要对所有关联的表空间同时进行备份和恢复。

C.系统编目表空间的备份和恢复必须离线进行,并且必须前滚至日志的末尾。而其他的表空间都可在线进行,并且可以前滚至某个特定时间点。

D.通过设定注册表变量DB2_COLLECT_TS_REC_INFO=ON,前滚命令将跳过不需要的日志来缩短恢复时间。

E.即使对象表空间不同,备份和恢复也不能同时进行。

3、执行方式

A.利用DB2命令backup对所有关联表空间进行同时备份。

B.恢复时,利用DB2命令restore对所有关联表空间进行同时恢复,恢复完成时,表空间处于前滚暂挂状态(ROLLFORWARD PENDING)。

C.利用DB2命令rollforward对表空间进行前滚恢复。

增量备份–DB2提供了两种以全备份为基础的增量备份模式

1.INCREMENTAL模式–最近一次全备份后所有更新数据的备份

2.DELTA模式–最近一次备份(包括全备份和增量备份)后所有更新数据的备份

一、循环日志下的版本恢复

最简单最基本的一个例子- 循环日志下的离线备份和恢复。

要点:

做了动作后,别忘了做检查来验证动作的正确性。

认真、细心是DBA最基本的素质。很多时候能救命的并不是多高级的技术。

操作过程:

1.用户登录:login(user: db2inst1)

2.创建数据库test1:db2 create db test1

3.连接:$ db2 connect to test1

4.备份数据库设定& 确认日志模式

$ db2 get db cfg > /opt/db2/backup/db.cfg.bak :备份数据库设定

$ db2 terminate

$ db2 get db cfg :确认日志模式

User exit for logging enabled (USEREXIT) = OFF

Log retain for recovery enabled (LOGRETAIN) = OFF

First log archive method (LOGARCHMETH1) = OFF

Second log archive method (LOGARCHMETH2) = OFF

5.全备份

$ db2 backup db test1 to /opt/db2/backup/

……

Backup successful. The timestamp for this backup image is : 20110408020115

6.检查备份镜像文件

$ db2ckbkp -h /opt/db2/backup/TEST1.0.db2inst1.NODE0000.CATN0000.20110408020115.001 ……

Image Verification Complete - successful.

7.查看恢复历史记录

$ db2 list history all for test1

8.进行误删除

备份表数据:$ db2 "export to /home/db2inst1/file01.del of del select * from tab1" ==>18 rows 删除表数据:$ db2 "delete from tab1"

确认:$ db2 "select count(*) from tab1" ==>0 row

9.恢复和结果确认

恢复数据库:

$ db2 connect reset :首先断开数据库的连接

$ db2 restore db test1 from /opt/db2/backup/ taken at 20110408020115 :进行恢复

确认

$ db2 "export to /home/db2inst1/file02.del of del select * from tab1"

$ diff file01.del file02.del :恢复前后进行数据比较

相关文档
最新文档