DB2数据库的备份跟恢复方法

DB2数据库的备份和恢复方法

转自http://blog.sina.com.cn/s/blog_5cecbc550100bc55.html

DB2数据库备份的方式与分类

按照数据库备份对数据库的使用影响来划分:联机备份(也称热备份或在线备份)
     
脱机备份(也称冷备份或离线备份)

按照数据库的数据备份范围来划分:完全备份——备份数据库中的所有数据
     
增量备份——备份数据库中的部分数据

增量备份的两种实现方式:增量备份(也称累计备份)——自最近成功的完全备份以来所有更改的数据的备份
    DELTA
备份——上一次成功的完全、增量或DELTA备份以后所做更改的数据的备份

在不同的操作系统下,DB2的备份文件的结构是不同的
WINDOWS操作系统下,数据库备份文件是嵌套在一系列文件夹下的特殊结构
UNIX操作系统下,数据库备份文件是一个文件

DB2数据库脱机备份与恢复:
步骤一:完全备份数据库
db2 backup db testdb to d:\db2_train
步骤二:模拟灾难,强制删除数据库
db2 drop db testdb
步骤三:根据该数据库完全备份还原数据库
db2 restore db testdb from d:\db2_train taken at 20061121152940
(数据库备份的时间戳)

DB2数据库增量备份与恢复:
步骤一:修改数据库参数trackmod,使之支持数据库进行增量备份
db2 update db cfg using trackmod yes
步骤二:更改参数后必须完全脱机备份数据库
db2 backup db testdb to d:\db2_train
步骤三:开始增量备份(脱机)
db2 backup db testdb incremental to d:\db2_train
步骤四:模拟灾难,强制删除数据库
db2 drop db testdb
步骤五:首先还原至完全脱机备份状态
db2 restore db testdb from d:\db2_train taken at 20071121153818
步骤六:还原至增量脱机备份状态
db2 restore db testdb from incremental automatic from d:\db2_train taken at 20071121154006

上述语句中的automatic表示无论有多少个增量备份,系统将全自动检索恢复数据库的顺序并自动恢复数据库,如果没有automaic,则需要多次手动恢复数据库,很麻烦并且容易出错,故建议使用automatic


DB2
数据库联机备份与恢复:
联机备份数据库可以使数据库在备份的同时仍然保持可用状态。要让数据库支持联机备份,必须更改数据库的日志归档方式。在脱机备份模式下,数据库采用循环日志方式记录数据库日志;在联机备份模式下,数据库采用归档日志的方式记录数据库日志。另外,对于联机备份的数据库来说,活动日志和归档日志就很重要了,一定要经常备份、保存

步骤一:修改数据库参数,使之支持在线联机备份
db2 update db cfg for testdb using logretain on trackmod on
步骤二:执行增量、在线备份之前必须执行离线全备份一次,否则数据库将处于backup pending状态,数据库不可用(若忘记脱机备份数据库,再执行一次脱机备份就可以解除backup pending状态)
db2 backup db testdb to d:\db2_train
步骤三:联机完全备份
db2 backup db testdb
步骤四:联机备份的同时再打开一个会话,模拟应用在线(联机增量备份)
db2 backup db testdb online incremental to d:\db2_train
步骤五:谨记,在步骤六之前一定要将活动日志文件备份到另一个路径,保存好(这里假设保存在c:\db2admin)
步骤六:模拟灾难,强制删除数据库

db2 drop db testdb
步骤七:根据在线完全备份恢复数据库
db2 restore db testdb from d:\db2_train taken at 20071121160548
步骤八:根据在线增量备份恢复数据库
db2 restore db testdb incremental automatic from d:\db2_train taken at 20071121152922
(恢复后的数据库处于前滚暂挂的不可用状态)
db2 connect to testdb
步骤九:前滚数据库,并指定归档日志位置,这个步骤非常重要!
db2 rollforward database testdb to end of logs and complete overflow log path("c:\db2admin")

本人在windows平台下做过测试,行的通,理论上在UNIX系统下也成,需要考证。。。Godspeed