DB2-HPU(Optim High Performance Unload)简叙及安装使用

(186) 2024-04-20 15:01:01

HPU简介

HPU是一个DB2工具,能在线快速卸载数据到文件,或其他BigData环境。在DB2数据库保护及业务数据保护的的某些场景下,可以使用此工具快速备份恢复。

DB2 保护场景

1.硬件或软件级别异常保护:如硬件级别高可用、HADR、QRepl、CDC、PureScale等;
2.数据迁移到新系统:如相同平台采用备份恢复;不同平台采用逻辑复制,如QRepl、CDC等;
3.测试开发环境,一般测试开发环境与生产环境网络不通:数据库备份及恢复,数据导出导入;
4.数据保护,如回溯到几年前数据:数据库备份及恢复,数据导出导入;

DB2迁移工具

常见工具或方法
1.如果OS平台一致,可以使用数据库备份恢复
2.使用db2move
3.编目游标Load from cursor
4.数据导入导出Unload (HPU) / Load
5.Logical Replication逻辑复制,如Q复制、CDC

HPU介绍

HPU可以从db2中快速卸载数据,不通过DB2 DatabaseManager ,而直接访问DB2 数据文件。测试验证,相对于export速度提升10倍。

DB2-HPU(Optim High Performance Unload)简叙及安装使用 (https://mushiming.com/)  第1张
基本功能:
1.在线库卸载数据到文件;
DB2-HPU(Optim High Performance Unload)简叙及安装使用 (https://mushiming.com/)  第2张

2.导出备份文件卸载数据到文件,包括TSM/NETBACK/BMC等备份软件;
DB2-HPU(Optim High Performance Unload)简叙及安装使用 (https://mushiming.com/)  第3张
3.在线迁移数据到异机;

DB2-HPU(Optim High Performance Unload)简叙及安装使用 (https://mushiming.com/)  第4张

4.分区数据库卸载,理论上,节点越多数据越均衡,导出速率越快。可以参见附加资源中;

DB2-HPU(Optim High Performance Unload)简叙及安装使用 (https://mushiming.com/)  第5张
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-HPU(Optim High Performance Unload)简叙及安装使用 (https://mushiming.com/)  第6张
如果对DB2其他工具感兴趣可以查看附件资源:DB2 10.5 开放平台体系图例。

参考:DB2 10.5 开放平台体系
DB2-HPU(Optim High Performance Unload)简叙及安装使用 (https://mushiming.com/)  第7张

HPU使用

安装

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中步骤

场景1:从在线库卸载数据

在实例用户下直接执行,从在线数据库导出特定表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

场景2:从备份文件卸载数据

在实例用户下直接执行,从目录中数据库备份文件中导出特定表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

场景3:异机直接恢复配置

可以在两台或多台主机之间直接恢复,导出数据不用落盘。
需要每台机器安装HPU,并启动HPU服务进程,配置相关db2认证参数后,再执行db2hpu导入数据

配置db2hpudm61服务

注意:每台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

THE END

发表回复