HPU是一个DB2工具,能在线快速卸载数据到文件,或其他BigData环境。在DB2数据库保护及业务数据保护的的某些场景下,可以使用此工具快速备份恢复。
1.硬件或软件级别异常保护:如硬件级别高可用、HADR、QRepl、CDC、PureScale等;
2.数据迁移到新系统:如相同平台采用备份恢复;不同平台采用逻辑复制,如QRepl、CDC等;
3.测试开发环境,一般测试开发环境与生产环境网络不通:数据库备份及恢复,数据导出导入;
4.数据保护,如回溯到几年前数据:数据库备份及恢复,数据导出导入;
常见工具或方法
1.如果OS平台一致,可以使用数据库备份恢复
2.使用db2move
3.编目游标Load from cursor
4.数据导入导出Unload (HPU) / Load
5.Logical Replication逻辑复制,如Q复制、CDC
HPU可以从db2中快速卸载数据,不通过DB2 DatabaseManager ,而直接访问DB2 数据文件。测试验证,相对于export速度提升10倍。
基本功能:
1.在线库卸载数据到文件;
2.导出备份文件卸载数据到文件,包括TSM/NETBACK/BMC等备份软件;
3.在线迁移数据到异机;
4.分区数据库卸载,理论上,节点越多数据越均衡,导出速率越快。可以参见附加资源中;
5.支持迁移到PostgreSQL ;
6.大数据平台接口支持,支持卸载为JSON格式,支持迁移到MongoDB NOSQL、HIVE 、HBASE、MapReduce、HDFS、Cloudant、Amazon S3、Swift;如果感兴趣可以参考资源链接
产品最早发布于IMS zOS平台(最早查到2000年),后来同步到开发平台aix/linux/window(最早查到2009年)。其作为 Db2® Advanced Recovery Solutions一部分,现在更名为InfoSphere Optim High Performance Unload。
主要操作通过命令完成,可以编制脚本及定时计划。与Data Studio工具有Plug-in to Data Studio集成后,可通过界面操作。
如果对DB2其他工具感兴趣可以查看附件资源:DB2 10.5 开放平台体系图例。
参考:DB2 10.5 开放平台体系
HPU工具很小,有试用版及正式版两种许可license
可以从附加资源中找到地址下载
将安装包下载放入目录并解压,如/media/HPU
用root用户执行
./install_hpu.sh
会创建/opt/ibm/HPU/V6.1目录
需要在unload指定数据库中创建相关存储过程
首先准备HPU的配置目录权限
chown -R db2inst1:db2inst1 /opt/ibm/HPU/V6.1/cfg
其次在对应数据库执行HPU初始化,切换到对应数据库实例
cd /opt/ibm/HPU/V6.1/install/function
./hpu_stored_proc_inst.sh /opt/ibm/HPU/V6.1 sampledb
最后指定环境变量,修改用户的profile文件,增加如下
export HPU61=/opt/ibm/HPU/V6.1
export PATH=$PATH:$HPU61/bin
注意:如果需要异机恢复,需要配置hpudm服务,请参见场景3中步骤
在实例用户下直接执行,从在线数据库导出特定表HPU1的数据到指定文件
db2hpu -i db2inst1 -d sampledb -t "TEST"."HPU1" -o hpu_hpu1.del
也可以指定控制文件导出,如下准备文件内容
vi scenario1.ctr
GLOBAL CONNECT TO SAMPLEDB DB2 NO
FLUSH BUFFERPOOLS YES
LOCK YES
;
UNLOAD TABLESPACE
SELECT * FROM "TEST"."HPU1";
OUTFILE ("hpu_hpu1.del" REPLACE)
LOADFILE ("hpu_hpu1.load")
FORMAT DELIMITED
DATE DATE_E
;
执行命令,按照控制文件导出
db2hpu -f scenario1.ctr -m scenario1_msg.out
在实例用户下直接执行,从目录中数据库备份文件中导出特定表HPU1的数据到指定文件
控制文件内容
vi scenario2.ctr
GLOBAL CONNECT TO sampledb
DB2 NO
USING BACKUP CATALOG
sampledb FROM “/data/dbbackup/”
TAKEN at 20221026100035;
UNLOAD TABLESPACE
SELECT * FROM "TEST"."HPU1";
OUTFILE ("hpu_hpu2.del" REPLACE)
LOADFILE ("hpu_hpu2.load")
FORMAT DELIMITED
DATE DATE_E
;
执行命令,按照控制文件导出
db2hpu -f scenario2.ctr -m scenario2_msg.out
也可以从TSM/NETBACKUP/BMC等备份软件中的备份文件抽取,如下控制文件指定从TSM中抽取
scenario2_tsm.ctr
GLOBAL CONNECT TO sampledb;
UNLOAD TABLESPACE
FLUSH BUFFERPOOLS NO
LOCK NO
USING BACKUP DATABASE sampledb USE TSM
TAKEN AT 2022102610;
SELECT * FROM "TEST"."HPU1";
OUTFILE ("hpu_hpu2_tsm.del" REPLACE)
LOADFILE ("hpu_hpu2_tsm.load")
FORMAT DELIMITED
DATE DATE_E
可以在两台或多台主机之间直接恢复,导出数据不用落盘。
需要每台机器安装HPU,并启动HPU服务进程,配置相关db2认证参数后,再执行db2hpu导入数据
注意:每台HPU都需要配置。
指定netservice名称
vi /opt/ibm/HPU/V6.1/cfg/db2hpu.cfg
netservice=db2hpudm61
指定service端口
vi /etc/services
db2hpudm61 54010/tcp
确定xinetd服务启动
systemctl start xinetd.service
检查db2hpu监听启动
netstat -a |grep db2hpu
tcp6 0 0 [::]:db2hpudm61 [::]:* LISTEN
注意:源端HPU需要配置。
准备目标端编目
db2 catalog tcpip node newdb remote 192.168.0.11 server 50000
db2 catalog db target at node newdb
HPU中指定目标端数据库
vi /opt/ibm/HPU/V6.1/cfg/db2hpu.dest
[RemoteDB2]
dbname=TARGET
node=NEWDB
user=db2inst2
HPU中存储远端db2认证信息
db2hpu --credentials remote
可以检查db2hpu.creds文件
vi /home/db2inst1/.db2hpu/db2hpu.creds
[NEWDB]
type=remote
user=db2inst2
password=916DDD58B69D147BEBF4DDC44B12F
控制文件内容
scenario3.ctr
GLOBAL CONNECT TO OLDDB;
MIGRATE TABLESPACE
SELECT * FROM "TEST"."HPU1";
LOADDEST(DB2 REMOTE "NEWDB")
INTO TABLE (TEST.HPU1)
FORMAT DELIMITED
DATE DATE_E
在源端执行命令,按照控制文件复制数据到目标端
db2hpu -f scenario3.ctr -m scenario3_msg.out
可以在SQL后增加with ur,在HPU 6.1及之后版本都是支持的。查到资料是从HPU 4.0版本开始支持with ur语法。
其次HPU有lock以及FLUSH BUFFERPOOLS 参数控制卸载unload期间lock行为。注意:从HPU 6.1后,参数QUIESCE被替换为 FLUSH BUFFERPOOLS 。
有以下四种组合:
Flush bufferpools yes lock yes
推荐这种,保证强一致性。Db2会收到正在进行unload卸载的通知,对表及依赖项静默共享锁,直到卸载unload结束。同时在开始卸载之前,相关的缓冲池页被刷新到磁盘,在卸载完成之前,不允许对表进行任何修改。
Flush bufferpools yes lock no
这种对修改的数据没有保护性。与第一个例子不同,在成功完成卸载通知之后,unload立即通知Db2卸载已经结束并释放静默共享锁,即使卸载还没有开始。
Flush bufferpools no lock yes
如果指定locks为yes,会强制转换为bufferpools yes。也就是第一种FLUSH BUFFERPOOLS YES LOCK YES。
Flush bufferpools no lock no
DB2没有收到卸载的通知,也没有感知正在卸载,Db2缓冲池页面不会刷新到磁盘,也不会获得Db2锁。虽然这种组合具有最低的开销,但是存在很大的风险,即提取的数据可能与事务不一致。执行甚至可能导致不可预测和意外的行为,包括异常终止,特别是表结构或分区(attach,deattch,reorg)。只有当确定所有的数据页都已刷新到磁盘,并且当前没有被另一个Db2应用程序修改时,才使用此组合。
HPU知识中心:InfoSphere Optim High Performance Unload for DB2 for Linux, UNIX and Windows 6.1
https://www.ibm.com/docs/en/iohpufdflu-and-w/6.1
HPU6.1版本信息:Download:InfoSphere Optim High Performance Unload for DB2 for Linux, UNIX and Windows Version 6.1
https://www.ibm.com/support/pages/infosphere-optim-high-performance-unload-db2-linux-unix-and-windows-version-61
DB2高级恢复特性介绍:IBM Db2 Advanced Recovery Feature
https://www.ibm.com/products/db2-advanced-recovery-feature
HPU大数据环境支持:Working with Big Data environments
https://www.ibm.com/docs/en/iohpufdflu-and-w/6.5?topic=data-working-big-environments