近日在某银行实施了基于Netbackup备份软件的Informix数据库的异机恢复异(Netbackup恢复重定向,在有关技术文档中叫re-direct restore/recover),这是一次完全自己搞定的一个小工程,历经从搭建环境,反复试验,掌握Netbackup重定向,理解消化Informix备份与恢复原理,查阅大量技术文档,解决遇到的问题,直到最后恢复成功,编写交付客户的技术文档,花费了大量的时间精力,当然,最后看到了成果,那一时刻真的很开心
下面向大家介绍实施与操作过程,
这其中有几个重点:
配置Netbackup支持重定向:默认配置下,使用Netbackup配置的备份,从哪个客户机备份的,就只能在哪个客户下恢复,如果需要重定向恢复,则需要进行相关的设置;
这家银行的源备份机是Netbackup Media Server,而恢复机是普通Netabckup Client,但是因为Master Server也是Media Server,因此,可以借助Master Server来读取源备份机的磁带卷;
一些Netabckup命令;
Informix恢复的与Oracle等企业级数据库一样,恢复数据时,都需要最近 的一次全备份,然后再前滚与回滚,而前滚利用的就是Informix逻辑日志。
一.客户的备份结构拓扑

Ø 备份拓扑描述:
这家银行Netbackup集中备份系统组成为:一台备份服务器(MasterServer+MediaServer),两台核心informix主数据(HA)为Media Server(LAN Free),恢复验证机为普通客户端。
备份服务器为:PC服务器,Windows2008R2 (service pack1) 64位企业版 + Netbackup 7.6.0.4
服务器地址:7.1.1.24/24
服务器主机名:SZSNBU
两台数据库服务器为:IBM p系列小型机,AIX6.1 + Netbackup 7.6.0.4 + Informix 11.5FC8
服务器地址:7.0.1.14/24 和 7.0.1.15/24
服务器主机名:p750a_hxdb1和p750b_hxdb2
恢复验证机为:IBM p系列小型机,IBM AIX6.1 + Netbackup 7.6.0.4+ Informix 11.5FC8
服务器地址:7.1.1.29/24
服务器主机名:hxdbrestore
参与备份的磁带库
EMC DD4200虚拟磁带库:15块2TB 的NL-SAS磁盘,虚拟出32个LTO-3磁带机,100盘400GB磁带,此虚拟带库位于主中心;
因目前核心数据库是在p750b_hxdb2上运行的,且备份数据都是p750b_hxdb2上发起的,因此以下文档中有关参数、环境变量,命令等都是与p750b_hxdb2相关的。当数据库切换至p750a_hxdb1后,要做相应变更。
二.系统安装与配置
1. 在恢复验证机上安装Netbackup Client 7.6.0.4 for AIX版本,安装过程略。
2. 在恢复验证机上安装informix 11.5 FC8 for AIX版本,安装过程略,注意:informix用户ID和informix组ID必须与主数据库服务器一致。
3. 在恢复验证机上设置与主数据相同的目录结构,以及informix数据库结构,设置过程略。
4. 在恢复验证机上做如下配置:
Ø Informix用户下,配置如下环境变量:
export INFORMIXDIR=/home/informix
export TERM=vt100
export ONCONFIG=onconfig.szs
export INFORMIXSERVER=szsbank
export PATH=.:$INFORMIXDIR/bin:$PATH
export LIBPATH=$INFORMIXDIR/bin:$INFORMIXDIR/lib/esql:$INFORMIXDIR/lib/cli:$INFORMIXDIR/lib/tools
####### for restore hx_informix ######
export DBTEMP=$INFORMIXDIR/tmp
export INFXBSA_CLIENT=p750b_hxdb2 这个变量是NBU重定向恢复需要的变量之一
export INFXBSA_SERVER=szsnbu //这个变量是NBU重定向恢复需要的变量之一
Ø root用户下的/etc/environment文件,加入如下内容:
########## for hx_informix restore ##########
INFORMIXDIR=/home/informix
INFXBSA_CLIENT=p750b_hxdb2 这个变量是NBU重定向恢复需要的变量之一
INFXBSA_SERVER=szsnbu //这个变量是NBU重定向恢复需要的变量之一
Ø 编辑/etc/hosts,加入备份服务器与恢复验证机的相应解析
Ø 将onconfig.szs配置为启用onbar工具,配置过程略
Ø 确保sqlhosts文件内容正确
5. 在Netbackup Master备份服务器上做如下配置:
Ø 编辑Windows的hosts文件,加入备份服务器与恢复验证机的相应解析
Ø 在D:\Program Files\Veritas\NetBackup\db目录中新建altnames目录
Ø 在altnames目录中新建文件hxdbrestore,内容为:p750b_hxdb2,即允许将p750b_hxdb2服务器的备份数据,重定向到hxdbrestore服务器。
Ø 因为恢复验证机不是media server,只能借助备份服务器读取磁带库(同时也是Media Server)来恢复数据,因此启动NBU Admin Console控制台,在主服务器szsnbu属性中,找到常规服务器,在介质主机覆盖中加入如下条目,含义为:允许原始备份服务器的数据通过szsnbu服务器恢复,如下图:

这个动作实际是在注册表中设置了FORCE_RESTORE_MEDIA_SERVER注册表项,如下图所示:

Ø 在控制台中找到客户端一项,配置恢复验证机hxdbrestore客户端属性,将介质服务器添加szsnbu主机,如下图所示:

以上,有关开启Netbackup重定向恢复功能的设置完毕。
三.完全恢复操作
简要步骤:
1. 恢复生产库的ixbar.0和oncfg_szsbank.0文件,这两个文件是informix备份恢复的关键文件,其中ixbar.0文件记录了源数据库服务器上onbar备份的数据信息;
2. 物理恢复:onbar –r –p
3. 逻辑恢复:onbar –r –l
4. 将数据库从quiescent模式转换为online模式
操作如下:
以root身份登陆恢复验证机hxdbrestore,输入命令:
# bprestore -B -p Backup_HXInfmx_p750B_ETC -t 0 -w -C p750b_hxdb2 -D hxdbrestore -S szsnbu home/informix/etc/ixbar.0
# bprestore -B -p Backup_HXInfmx_p750B_ETC -t 0 -w -C p750b_hxdb2 -D hxdbrestore -S szsnbu home/informix/etc/oncfg_szsbank.0
-B代表从备份中还原,-p代表对应的策略,-t 0代表文件级恢复,–w代表等待系统恢复完毕返回提示符,–C代表原始客户端,-D代表目标客户端(异机),-S代表Master Server
完成两个onbar备份信息文件的恢复后,破坏数据文件:
# dd if=/dev/zero of=/dev/rrootdbs count=200
继续以informix身份登陆恢复验证机hxdbrestore,运行如下命令:$ onbar –r –p,做物理文件恢复,上述命令完成后,继续运行:$ onbar –r –l,做逻辑日志恢复
上述命令完成后,数据库一般为Quiescent状态,运行如下命令:
$ onmode -m将数据库置为online状态
至此,恢复验证机数据库恢复完毕。
四.基于时间点恢复自凌晨全备份以来的操作
例如:今日是2016年4月12日,要恢复今日早9点00分之前的所有数据,则恢复今日凌晨的全备,然后前滚日志。
Ø 首先恢复ixbar.0和oncfg.szsbank.0两个文件,以root身份登陆恢复验证机hxdbrestore,输入命令:
# bprestore -B -p Backup_HXInfmx_p750B_ETC -t 0 -w -C p750b_hxdb2 -D hxdbrestore -S szsnbu home/informix/etc/ixbar.0
# bprestore -B -p Backup_HXInfmx_p750B_ETC -t 0 -w -C p750b_hxdb2 -D hxdbrestore -S szsnbu home/informix/etc/oncfg_szsbank.0
Ø 完成两个onbar备份信息文件的恢复后,破坏数据文件:
# dd if=/dev/zero of=/dev/rrootdbs count=200
Ø 在恢复验证机上以informix身份登陆,运行命令:
$ more ixbar.0 确认存在9点的备份信息

Ø 继续以informix身份登陆恢复验证机hxdbrestore,运行如下命令:$ onbar –r –p,做物理文件恢复,命令完成后,继续运行:onbar -r -l -t "2016-04-12 9:02:00",做逻辑日志恢复
Ø 上述命令完成后,数据库一般为Quiescent状态,运行如下命令:
$ onmode -m将数据库置为online状态
至此,今日早9点00分之前的所有数据在恢复验证机上恢复完毕。
五.基于逻辑日志恢复自凌晨全备份以来的操作
例如:今日是2016年4月12日,要恢复今日早10点00分之前的所有数据,则恢复今日凌晨的全备,然后前滚日志。
Ø 首先恢复ixbar.0和oncfg.szsbank.0两个文件以root身份登陆恢复验证机hxdbrestore,输入命令:
# bprestore -B -p Backup_HXInfmx_p750B_ETC -t 0 -w -C p750b_hxdb2 -D hxdbrestore -S szsnbu home/informix/etc/ixbar.0
# bprestore -B -p Backup_HXInfmx_p750B_ETC -t 0 -w -C p750b_hxdb2 -D hxdbrestore -S szsnbu home/informix/etc/oncfg_szsbank.0
Ø 完成两个onbar备份信息文件的恢复后,破坏数据文件:
# dd if=/dev/zero of=/dev/rrootdbs count=200
Ø 在恢复验证机上以informix身份登陆,运行命令:
$ more ixbar.0 确认存在10点的备份信息

Ø 以informix身份登陆恢复验证机hxdbrestore,运行如下命令:$ onbar –r –p,做物理文件恢复,命令完成后,继续运行:onbar -r -l -n 93381,做逻辑日志恢复
Ø 上述命令完成后,数据库一般为Quiescent状态,运行如下命令:
$ onmode -m将数据库置为online状态
至此,今日早10点00分之前的所有数据在恢复验证机上恢复完毕。
六.基于逻辑日志恢复自前一日全备份以来的操作(日结前一日的数据)
例如:今日是2016年4月12日,要恢复2016年4月11日中午12点00分之前的所有数据,则利用11日凌晨的全备,然后前滚日志。
Ø 首先恢复ixbar.0和oncfg.szsbank.0两个文件以root身份登陆恢复验证机hxdbrestore,输入命令:
# bprestore -B -p Backup_HXInfmx_p750B_ETC -t 0 -w -C p750b_hxdb2 -D hxdbrestore -S szsnbu home/informix/etc/ixbar.0
# bprestore -B -p Backup_HXInfmx_p750B_ETC -t 0 -w -C p750b_hxdb2 -D hxdbrestore -S szsnbu home/informix/etc/oncfg_szsbank.0
Ø 完成两个onbar备份信息文件的恢复后,破坏数据文件:
# dd if=/dev/zero of=/dev/rrootdbs count=200
Ø 在恢复验证机上以informix身份登陆,运行命令:
$ more ixbar.0 确认存在前一日早9点的备份信息

Ø 以informix身份登陆恢复验证机hxdbrestore,运行如下命令:
$ onbar -r -p -t "2016-04-11 05:00:00" ,这里指定一个大致11日凌晨完成全备的时间做物理文件,例如5点。

Ø 上述命令完成后,继续运行:onbar -r -l -n 93295,做逻辑日志恢复
Ø 上述命令完成后,数据库一般为Quiescent状态,运行如下命令:
$ onmode -m将数据库置为online状态
至此,日结前一日12点00分之前的所有数据在恢复验证机上恢复完毕。




