本文测试环境:Windows XP、IBM DB2 Express V9.5、 DB2 Quest Center V9.5
在这里举个应用场景以说明数据库恢复备份的思路:
那么假设我们周一晚上做了一个数据库的备份,周二中午12 点数据库存储介质出现了故障。如何能够实现恢复呢 ? 那么首先是把数据库恢复到我们备份的那个时刻(周一晚上),但是备份之后和周二 12 点之间对数据库已经做的交易(事物)怎么办呢?这就需要用到数据库日志,因为一旦交易提交,我们对数据库做的 SQL ( insert 、 update 、 delete 等)都会记录到数据库日志中。所以我们就用数据库日志(前提是数据库日志没有受到损坏)把备份之后和数据库崩溃之前的所有 SQL 操作重做( redo )一遍,。这就是数据库备份恢复的原理。
1、DB2数据备份和恢复实验准备工作
Step1:创建测试数据库TestDB

2

3

4

结果:
*** SCRIPT START: Connection: LENOVO-MILO-DB2-TOOLSDB (db2admin) Jul-09-2009 14:34:49 ***
CREATE DATABASE TestDB
ON 'E:'
USING CODESET GBK TERRITORY CN
WITH 'DEMO TestDB';
completed successfully.
DB20000I CREATE DATABASE命令成功完成。
Statement processed successfully in 32.42 secs.
*** SCRIPT END : Connection: NONE Jul-09-2009 14:35:21 ***
Step2:创建数据库管理表区间Data_SP(要先设置好路径和文件)
此处的路径为:E:/DB2_Train/TestDB/UserData
文件名设置为:TestDB.UserData

2

3

4

5

6

7

8

9

这里设置了初始化为4K * 2560 = 10MB的表空间
结果:TableSpace里面多了一个名为Data_SP表空间
Step3:创建测试表TestTable

2

3

4

5

6

结果:
:
Step4:在TestTable下面插入测试数据

2

--说明:建立测试表并插入数据是为了稍后验证数据库恢复的时候用的--
结果:
或者可以使用

2

3

4

Step5:DB2数据库脱机备份和恢复实验
说明:我将脱机备份的文件放在了以下路径中:E:/DB2_Train/Offline
1、完全脱机备份数据库

2

3

4

5

6

7

8

9

10

2、模拟灾难现场,强制删除TestDB数据库

3、根据数据库完全备份恢复数据库

2

4、查询表TestTable里面内容,这一块要重点关注,因为它涉及三种备份方式的区别

2

3

4

5

6

Step6、DB2数据库增量备份和恢复实验
1、查看数据库配置文件

2

2、修改数据库配置参数TRACKMOD,使之数据库进行增量备份

2

3、更改参数后,必须需要完全离线全备份数据库

2

3、查看TestTable表的内容
4、插入测试数据
这里我要说明一下为什么要在表这里插入测试据?
状态 | TestTable表里MESSAGE的值 | 备注 |
全备份 | 测试表建立成功 | |
插入数据 | 测试表建立成功 开始增量数据库备份测试 | |
增量备份 | 测试表建立成功 开始增量数据库备份测试 | |
还原全备份 | 测试表建立成功 | |
还原增量备份 | 测试表建立成功 开始增量数据库备份测试 |

2

3

5、开始增量备份(脱机备份)

2

6、模拟灾难,强制删除数据库

2

7、恢复数据库
首先还原至完全离线备份状态,然后还原至增量离线备份状态
7.1、还原至完全离线备份状态

2

这里要注意还原完全备份后TestTable表里Message的值,也是为什么要加入测试数据的原因
7.2、还原至增量离线备份状态

2

3

4

Step7、DB2联机备份和恢复实验
联 机备份数据库可以使数据库在备份的同时仍然保持在可用状态。要让数据库支持联机备份,必须更改数据库的日志归档方式。在脱机备份模式下,数据库采用循环日 志方式记录数据库日志,在联机备份模式下,数据库则采用归档日志的方式备份数据库日志。另外,对于联机备份的数据库来说, 活动日志和归档日志就很重要了,一定要经常备份、保存,像银行多数使用的是归档日志的方式,因为银行的数据关乎到民生的生活,哪怕是突然间断电了,数据库崩溃了,但是每一笔的银行交易都需要时时刻刻把交易记录保存下来,所以这里的联机备份模式就很适合这类的应用场景
1、实验开始之前,最好先重新启动数据库实例,并且连接到需要做联机备份的数据库,此例数据库为TestDB

2

3

2、开始插入测试数据,此处为“开始联机备份恢复的测试”

2

3

3、修改数据库配置文件参数,以启动联机备份模式

2

主要测试的参数为
参数名 | 修改前 | 修改后 |
TRACKMOD | ON | ON |
MIRRORLOGPATH | NULL | E:/DB2_Train/Logs |
LOGRETAIN | OFF | ON |
USEREXIT | OFF | ON |

2

3

4

5

6

7

8

9

10

11

12

4、执行离线完全备份(脱机,时间戳为20090710113202)

2

5、插入测试数据

2

3

6、执行联机在线增量备份,模拟应用在线(联机增量备份,时间戳为20090710115930)

2

7、插入测试数据
这里模拟发生了一个应用场景,假设我早上11点钟做了离线完全备份,12点钟做了在线增量备份,但是1点钟突然间发生了不可预见的灾难性事故,数据库崩溃了,在12点钟备份后到1点钟这个时间段我做了一个插入数据“开始联机备份恢复测试-数据库日志”

2

3

这里列出所有备份所对应的TestTable表里Message字段的值
名称 | ID | TestTable表里Message字段的值 |
离线完全备份 | 0 测试表建立成功 | |
在线增量备份 | 0 测试表建立成功 | |
数据库日志 | 0 测试表建立成功 |
8、保存归档好数据库日志文件
系统默认的数据库日志文件存放位置,此路径由参数MIRRORLOGPATH设置,这里为E:/DB2_Train/Logs

说 明:Windows操作系统下的数据库备份文件是嵌套在一系列文件夹之下的特殊结构。上例中,D:/DB2_Train 是指备份目录,TESTDB.0是指数据库名称为 TESTDB,DB2 是指实例名称,NODE0000 是指节点名称,CATN0000 是指编目名称,20070801是指备份发生的年月日,形如YYYYMMDD,181241是指备份发生的时间,精确到秒,也就是指 18 点 12 分 41秒,形如HHMMSS,最后的 001 则是备份文件的一个序列号。
9、本例数据库日志归档整理后的文件组织结构

10、模拟灾难现场,强制删除数据库

2

3

4

5

11、根据离线完全备份恢复数据库

2

12、根据在线增量备份恢复数据库

2

3

13、前滚恢复数据库,并指定归档日志位置

2

14、查看数据完整性

2

15、总结及展望
这 个教程花了我两天的时间来整理和撰写,但是还是感觉到对文章组织结构、逻辑推理方面还远远不够,这篇教程的用意是为了让自己更加深刻的理解DB2数据库的 各种备份和恢复类型,也作为一个知识字典,下次忘记语句了,还可以过来查找,希望自己更加的努力学习DB2数据库,它的魅力实在太大了。
原文链接:http://blog.csdn.net/hanxin1987216/article/details/4538661