db2 全量+增量数据的备份与恢复
数据库名称以yilitest 为例
1.准备工作
- 1 更改数据库参数 logretain, userexit, trackmod 为 on。修改参数的目的:应用中以完全备份、在线增量备份为主。只要启用了归档日志(logretain=on) ,就可以进行在线备份,启用trackmod = on,就可以进行增量备份[(累计增量备份和delta增量备份)。
#1.启用用户出口
db2 update db cfg for yilitest using userexit on
#2.启用归档日志
3.db2 update db cfg for yilitest using logretain on
#启用增量备份功能
db2 update db cfg for yilitest using trackmod on
1.2查看归档日志的位置,可以更改归档日志的存储位置(为归档日志文件指定路径可以将归档日志模式打开)。
#4.查看数据库配置文件中的日志路径
>db2 get db cfg | grep TRACKMOD
日志文件路径 = C:\DB2\NODE0000\SQL00
003\SQLOGDIR\
#5.更改日志文件路径
>db2 update db cfg using logarchmeth1 disk:c:\db2\sample\"
DB20000I UPDATE DATABASE CONFIGURATION 命令成功完成。
SQL1363W 未动态更改为立即修改而提交的一个或多个参数。对于这些配置参数,必须在所有
应用程序都与此数据库断开连接之后,更改才会生效。
#6.关闭数据库链接
>db2stop force
2019-09-09 16:16:58 0 0 SQL1064N DB2STOP 处理成功。
2019-09-09 16:16:59 1 0 SQL1064N DB2STOP 处理成功。
SQL1064N DB2STOP 处理成功。
#7.启动数据库
> db2start
2019-09-09 16:17:05 1 0 SQL1063N DB2START 处理成功。
2019-09-09 16:17:06 0 0 SQL1063N DB2START 处理成功。
SQL1063N DB2START 处理成功。
2.备份步骤如下:
开启这些参数后,数据库处于backup pending状态,要求做数据库的离线全备份,目的是解触这种状态。
#8.离线全备份
>db2 backup db yilitest to 'f:qz/archive'
#9.在线全备份
>db2 backup db yilitest online to 'f:qz/archive'
备份成功。此备份映像的时间戳记是:20190911175118
#10.向表中插入数据
>db2 insert into regular.yilitest (userid) values (1456)
DB20000I SQL 命令成功完成。
#11.查看表记录
>db2 select *from regular.yilitest
USERID UC TYPE STATUS
----------- ----------- ----------- -----------
1 2 3 4
1 2 3 4
22 33 44 55
2 4 5 8
2 4 3 5
…………….
89 条记录已选择。
#12.进行增量备份
>db2 backup db yilitest incremental to 'f:qz/archive'
备份成功。此备份映像的时间戳记是:20190911175211
#13.向表中插入数据
>db2 insert into regular.yilitest (userid) values (1456)
DB20000I SQL 命令成功完成。
#14.进行增量备份
db2 backup db yilitest incremental to 'f:qz/archive'
备份成功。此备份映像的时间戳记是:20190911175323
3.恢复步骤如下:
此策略可以恢复到从全量开始任意一天的数据
3.1重要!将此时的归档日志(C:\DB2\NODE0000\SQL00003\SQLOGDIR\)复制到另外的路径,rollforward数据库到最新状态需要用到这些日志,也可以rollforward 到online备份结束状态,但这样就会丢失备份后数据库的状态
#1.模拟灾难(此步骤之前应该先备份日志文件)
>db2 drop db yilitest
#2.执行最后一步增量文件
>db2 restore db yilitest incremental automatic from f:/qz/archive taken at 20190911175323
DB20000I RESTORE DATABASE 命令成功完成。
#3.执行前滚数据库的操作,文件夹为复制后的文件夹路径
>db2 ROLLFORWARD DATABASE yilitest TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH (f:/qz/SQL00003/SQLOGDIR)
前滚状态
输入数据库别名 = yilitest
节点数已返回状态 = 1
节点号 = 0
前滚状态 = 未暂挂
下一个要读取的日志文件 =
已处理的日志文件 = S0000077.LOG - S0000077.LOG
上次落实的事务 = 2019-09-11-09.54.19.000000 UTC
B20000I ROLLFORWARD 命令成功完成。
#4.校验能否成功连上恢复的数据库
>db2 connect to yilitest