@[TOC](《IBM DB2 备份恢复实用文档》(第一部分))
1 理论
1.1 关于备份恢复说明
a、DB2数据库备份和恢复的数据都是已经提交落地在磁盘的数据 。
b、DB2数据库备份和恢复使用的日志都是归档日志。
c、只有开启归档日志,才能进行在线全备、在线增备。否则只能进行离线备份。
c、脱机备份就是离线备份;联机备份就是在线备份。
1.2 数据库备份文件格式
STAFF.0.DB201.DBPART000.19950922120112.001
数据库别名
在调用 BACKUP 实用程序时指定的,由 1 至 8 个字符组成的数据库别名。
类型
备份操作的类型,其中:0 表示完整的数据库级别备份、3 表示表空间级别 的备份而 4 表示由 LOAD COPY TO 命令生成的备份映像。
实例名
从 DB2INSTANCE 环境变量中提取的、由 1 到 8 个字符组成的当前实例名。
数据库分区号
在单一分区数据库环境中,分区号始终是 DBPART000。 在分区数据库环境中,它是 DBPARTxxx,其中 xxx 是 db2nodes.cfg 文件中对数据库分区指定的编号。
时间戳记
执行备份操作时的日期和时间的 14 个字符表示法。 该时间戳记的格式为 yyyymmddhhnnss,其中:
yyyy 表示年份(1995 到 9999)
mm 表示月份(01 到 12)
dd 表示某月中的某一天(01 到 31)
hh 表示小时(00 到 23)
nn 表示分钟(00 到 59)
ss 表示秒(00 到 59)
序列号
用作文件扩展名的一个 3 位的数字。
1.3 db2ckbkp参数
输出中的:
● Backup Mode 0-offline(脱机备份),1-online(联机备份)
● Backup Type 0-full(全备份),3-tablespace(表空间级备份)
● Backup Gran.0-normal(正常备份),16-incremental(增量备份),48-delta(增量delta备份)
2 数据库备份
2.1 脱机备份(离线备份)
2.1.1 离线备份命令
// 离线备份:数据库默认备份方式。
-- 已连接数据库,但数据库无其他连接。
db2 connect to ncc
db2 force applications all
db2 backup database ncc online to d:\db2\backup
2.1.2 数据库历史备份查看
db2 list history backup all for ncc
2.1.3 数据库备份进度监控
db2 list utilities show detail
2.2 联机全量备份(在线全备)
2.2.1 开启归档日志
//1、v9.7之前配置参数
db2 update db cfg for ncc using userexit on
db2 update db cfg for ncc using logretain on
//2、v9.7及之后版本配置参数
db2 update db cfg using logretain on
db2 update db cfg for tycjdb using LOGARCHMETH1 DISK:/db2data/tycjlog
2.2.2 执行一次脱机备份
db2 connect to ncc
db2 force applications all
db2 backup database ncc online to d:\db2\backup
2.2.3 执行联机备份
// 联机全量备份
-- compress 压缩备份
-- include logs 包含日志
db2 backup database testdb online to /db2/backup compress include logs
2.3 联机增量备份(在线增备)
2.3.1 设置增量备份参数
//修改参数
db2 update db cfg for ncc using trackmod yes
--此参数指定数据库管理器是否将跟踪数据库修改,以便 Backup 实用程序可以检测到数据库页的哪些子集必须通过增量备份来检查并可能包括在备份映像中。
--在将此参数设置为“YES”之后,必须执行完整数据库备份,才能对数据库执行增量备份。
--如果启用此参数后,创建了新的表空间,那么必须执行包含该表空间的备份。此备份可以是数据库备份,也可以是表空间备份。在执行备份之后,将允许执行增量备份来包含此表空间。
2.3.2 执行一次全量备份
// 做一次离线全量备份
db2 backup database testdb to /db2/backup compress include logs
2.3.3 设置增量备份
// 不加DELTA,备份上一次全量备份至今的镜像。
db2 backup database testdb incremental to /db2/backup compress include logs
// 加DELTA,备份上一次备份(可以是增量备份)至今的镜像。
db2 backup database testdb incremental delta to /db2/backup compress include logs
3 数据库恢复前操作
3.1 创建数据库
//获取创建数据库的地域territory和字符集编码code set
[db2inst1@localhost ~]$ db2 get db cfg for ssit | grep -E "territory|code set"
Database territory = us
Database code set = UTF-8
//在新环境创建相同的数据库,等待迁移。
db2 create db testdb using codeset UTF-8 territory us
3.2 导出建库语句
db2look -d testdb -e -l -x >db2look.testdb.sql
3.3 根据建库语句创建bufferpool和表空间
原表空间的bufferpool和表空间名称不能改变,参数值要一致。都要建立。
具体操作略。
3.4 db2ckbkp检查备份文件
// 检查备份文件类型
db2ckbkp -H <备份文件>
// 检查备份文件完整性
cd backup-dir --进入备份文件目录
db2ckbkp SAMPLE.0.arada.NODE0000.CATN0000.20051014114322.001
[1] Buffers processed: ##############################################
######################################################################
##############
Image Verification Complete - successful.
3.5 设置数据库环境变量
// 查看源数据库环境变量
db2 get db cfg for testdb
// 设置新数据库环境变量,举例如下:
db2 connect to testdb
db2 "UPDATE DB CFG FOR testdb USING applheapsz 4096"
3.6 设置数据库全局变量
//在源数据库中查看全局变量
db2set -all
//在新数据库中设置变量,举例如下。
db2set DB2_OVERRIDE_BPF=5000