db2备份恢复(backup restore)

1.  备份恢复

1.1.  备份策略

备份架构: LAN-Free 备份

备份方式:利用 NBU 直接备份到虚拟带库,然后通过 Vault 将备份数据保存到磁带库

备份周期:以周为备份周期,每周六,周三全备,其他每天增量备份

保存周期:虚拟带库保存 1 个月,磁带库上保存 3 个月。

备份内容:数据库 + 归档日志 + 配置参数

1)  数据库周六晚 21:00 开始做全备份,周三,周六做增量备份。

db2 update db cfg for JGEMLCDB  using  trackmod o n (参数修改及确认,增量备份需要 trackmod on

db2 BACKUP DATABASE $MY_DB2 online $MY_SCHED LOAD $MY_LIB OPEN 4 SESSIONS BUFFER 1024

 

     2 )归档日志 4 小时备份一次,经过沟通,把归档日志使用文件的方式进行差异化备份,操作系统保留三天的归档日志。

     

3 NBU 全备份及增量备份脚本内容如下:

MY_DB2=JGEMLCDB

MY_LIB=/usr/openv/netbackup/bin/nbdb2.sl64

 

MY_SCHED 取变量判断如下

 

if [ "$DB2_FULL" = "1" ] ; then

         MY_SCHED=""

elif [ "$DB2_CINC" = "1" ] ; then

         MY_SCHED="INCREMENTAL"

elif [ "$DB2_INCR" = "1" ] ; then

         MY_SCHED="INCREMENTAL DELTA"

else

         MY_SCHED=""

fi

 

NBU 备份脚本中的备份语句

CMD_LINE="db2 BACKUP DATABASE $MY_DB2 online $MY_SCHED LOAD $MY_LIB OPEN 4 SESSIONS BUFFER 1024"

 

4 )实施过程:

 

在做 NBU 备份前,需要进行本地磁盘的离线全库备份,否则 NBU 实施过程中会报 SQL1035N 错误,如下

SQL1035N  The operation failed because the specified database cannot be

connected to in the mode requested.  SQLSTATE=57019

 

本地磁盘备份,在应用不断开情况下,实验脚本执行如下命令(避免应用自动连接导致最后一句执行失败)

 

db2 connect reset

db2 force application all

db2  DEACTIVATE DATABASE JGEMLCDB

db2 backup db JGEMLCDB  to /db2data

 

以上成功之后,再做 onling 备份

 

db2 backup db JGEMLCDB online to /db2data

 

然后通过 NBU 进行备份

 

5 )归档日志备份删除

i )通过 NBU 备份删除,需要修改参数, logarchmeth1 ,以 vendor 方式归档到磁带中,进行备份删除管理,但是本地磁盘 /db2arclog/ 看不到归档日志

 

db2 update db cfg for JGEMLCDB using logarchmeth1 vendor:/usr/openv/netbackup/bin/nbdb2.sl64

      ii )经过沟通,归档日志放在本地磁盘,通过 NBU 使用文件的方式进行差异化备份,操作系统保留三天的归档日志。

      修改参数

db2 update db cfg for mtrdb using logarchmeth1 Disk:db2arclog/

手工归档到本地磁盘,进行确认产生归档日志

db2 archive log for db JGEMLCDB

建立删除的脚本及任务计划(在 member0 member1 都操作)

删除 3 天前的归档日志

mkdir /home/db2sdin1/scripts

cd /home/db2sdin1/scripts

vi /home/db2sdin1/scripts/archlog_delete.sh

 

#!/bin/sh

find /db2arclog/db2sdin1/JGEMLCDB/NODE0000/LOGSTREAM0000/C0000001 -name "*.LOG" -type f -mtime +3 -exec rm {} \;

find /db2arclog/db2sdin1/JGEMLCDB/NODE0000/LOGSTREAM0001/C0000001 -name "*.LOG" -type f -mtime +3 -exec rm {} \;

 

crontab -e

 

10.49.2.10

#0 21 * * * sh  /home/db2sdin1/scripts/archlog_delete.sh

 

10.49.2.20

0 21 * * * sh  /home/db2sdin1/scripts/archlog_delete.sh


1.2.  恢复策略

 

优先采用备份介质恢复,这事最方便的方式。其次,在出现重大灾难的时候,考虑从 HADR 备库接管,这种方式有一定风险。

需要 确保 数据库参数trackmod 设置为 on ,在备份软件里面设置 2 个调度策略。

Db2 分三种恢复方式,如下:

 

恢复类型:

DB2 考虑到了下列恢复类型:

 

崩溃恢复。这种类型的恢复通过撤销(回滚)未提交的事务来防止数据库处于不一致状态。 请再次考虑上一页中的示例。如果在 COMMIT 语句之前发生电源故障, 那么下一次 DB2 重新启动,再访问该数据库时, DB2 将先回滚( ROLLBACK INSERT 语句, 然后回滚( ROLLBACK DELETE 语句。(注:回滚语句的顺序与最初执行时的顺序相反。)

 

版本恢复。这种类型的恢复通过使用从 BACKUP 命令获取的备份映像来恢复先前的数据库版本。 恢复的数据库将包含在执行 BACKUP 命令时所处状态的信息。 如果在执行备份之后针对数据库执行进一步操作,那么该信息将丢失。

 

前滚恢复。这种类型的恢复通过使用完全数据库备份,结合日志文件来扩展版本恢复。 必须先恢复备份以用作基线;然后在该备份之上应用日志。 该过程会将数据库或表空间恢复到某个特定时间点。前滚恢复要求启用归档日志记录 。我们将在本教程的稍后部分中讨论归档日志记

 

以上第一种崩溃恢复是重启 db2 之后,实例内部操作,无需人工干预。人工考虑需要的恢复通常是后两种恢复方式,这两种对应完全恢复和不完全恢复。

 

恢复步骤:

1.  restore 备份 + 归档日志,其中 logtarget 指定恢复出来的归档日志存放地方

db2 "restore database mtrmlc from /data/backup taken at 201 6 0331234149  logtarget  /data/backup/logs”

 

1.  然后考虑如下三种恢复级别

1)  最大程度的恢复,即 restore 全备份 + 增量备份 + 归档日志 + 遍历所有归档及在线日志      Rollforward 指定 to end of logs and complete

1)  基于一部分损失的恢复,指定到相应时间,这个时间应该大于备份结尾,小于最大程度的恢复,否则报错, to time using local time ,如下:

       db2 "rollforward DATABASE test to 20140828110021.000000 using local time"

2)  最小程度的恢复,即恢复到备份结束的时间点

       Rollforward 指定 to end of backup and stop


1.3.  备份恢复示例

从备份介质恢复:全备 + 前滚日志

 

例如:

1)  数据库备份时必须要加上 online include logs 选项

db2 backup database mtrmlc   online to  /data/backup  include logs

 

1)  数据库恢复:

db2 "restore database mtrmlc from /data/backup taken at 201 6 0331234149  logtarget  /data/backup/logs”

 

2)  恢复日志:

db2 "rollforward database JGEMLCDB  to end of logs and complete overflow log path (/data/backup/logs)"

 

4 )在测试环境进行 NBU 备份恢复测试工作

 

i) 通过 NBU 调用备份

ii) 进行恢复,恢复语句通过 load 指定调用带库

     db2 restore db  mtrdb load  /usr/openv/netbackup/bin/nbdb2.sl64 

  db2 rollforward db mtrdb to end of logs and complete

5 )在测试环境进行本地磁盘的备份恢复测试

       db2 backup db mtrdb  to /db2back

       db2 restore db  mtrdb from /db2back taken at 20160309174736

 db2 "rollforward database mtrdb to end of logs and complete"


请使用浏览器的分享功能分享到微信等