转载

将数 TB 的数据从 IBM Balanced Warehouse 迁移到 IBM Smart Analytics System

简介

如果是在单分区数据库环境中,那么 DB2 中的数据库迁移可能会是一项简单的任务。但是,如果是在包含数 TB 的有关 Database Partition Feature (DPF) 数据的大型数据仓库环境中,则需要制定其他的一些决策。本文主要探讨 DB2 中的可用数据迁移选项,并深入探讨数据模块从 BCU D5100 迁移到 ISAS 5600 R2 的过程。

回页首

了解系统

在规划迁移活动之前,DBA 和数据库架构师需要了解源服务器和目标服务器配置。图 1 显示了基于 Intel 的源 D5100 v2 系统的 DB2 元素:

图 1. D5100 Balanced Warehouse 节点配置

将数 TB 的数据从 IBM Balanced Warehouse 迁移到 IBM Smart Analytics System

图 2 显示了基于 Intel 的目标 ISAS 5600 R2 系统的 DB2 元素:

图 2. 5600 R2 IBM Smart Analytics System 节点配置

将数 TB 的数据从 IBM Balanced Warehouse 迁移到 IBM Smart Analytics System

从数据库管理和迁移角度来看,这两个系统之间的主要区别是数据库分区的数量。表 1 列出了两个系统之间的数据库分区组属性,以及迁移后的更改需求:

表 1. 数据库分区组属性

数据库分区组 BCU D5100 分发 ISAS 5600 分发 迁移后
IBMDEFAULTGROUP 41 (NODE0000-NODE0040) 65 (NODE0000-NODE0064) 需要分区组扩展
IBMCATGROUP 1 (NODE0000) 1 (NODE0000) 不需要对系统目录分区组进行任何更改
IBMTEMPGROUP 41 (NODE0000-NODE0040) 65 (NODE0000-NODE0064) 不需要分区组扩展,但需要添加容器路径
DWECONTROLGROUP 1 (NODE0000) 1 (NODE0000) 没有任何更改
SDPG 1 (NODE0000) 1 (NODE0000) 没有任何更改
PDPG 41 (NODE0000-NODE0040) 65 (NODE0000-NODE0064) 需要分区组扩展和容器路径创建

回页首

有效的数据库迁移战略

当任务存在最小的业务影响,比如最小计划内停机、零数据完整性问题以及优化资源成本时,组织需要考虑迁移计划的有效性和稳健性。图 3 描述了具体流程以及相关的数据库成功迁移的主要步骤:

图 3. 有效的数据库迁移战略

将数 TB 的数据从 IBM Balanced Warehouse 迁移到 IBM Smart Analytics System

分析 是数据库迁移的第一阶段,这个阶段通常包含用来了解源系统和目标系统的以下组件:

  • 数据库节点差异和迁移选项(如表 2 所示)
  • Tivoli System Automation for Multiplatform 配置
  • 业务需求
  • 暂存区域需求
  • 数据完整性检测需求
  • 数据库迁移流程

表 2. 同构数据库迁移选项

数量 迁移选项 Pros Cons
1 数据库恢复 同构系统之间的已知迁移战略 此处的挑战是源系统和目标系统之间的逻辑分区数量的区别。源 BCU 系统有 41 个数据库分区,目标 ISAS 系统有 65 个数据库分区。因此,这不仅仅是直接的数据库恢复。
2 IBM InfoSphereOptim High Performance Unload (HPU) 通过 DBA 最小限度的干预来实现高速自动重新分区和加载 您需要购买源系统和目标系统的 HPU 许可。
3 内部数据迁移脚本 将数据从源系统迁移到目标系统的简单方法 此处的挑战是 DBA 需要全面了解系统和业务需求。

准备 阶段中,您开始创建迁移计划文档和迁移脚本,并准备系统集成图来执行应用程序接口迁移后作业测试。

验证 阶段中,您会在 UAT 环境中测试端到端流程,并记录每一个步骤的执行时间和成功/失败消息。一旦出现任何故障,就会记录下该流程,以便进行修复。这一阶段中的主要元素是根据验收标准交叉验证每一个步骤的结果。

实现 阶段中,通过减少接口和处理作业,冻结了源服务器应用程序活动。执行迁移;在成功完成迁移后,根据验收标准检查所有接口。

作为 FMCG 领域的市场领导者,Reckitt Benckiser 想要使系统中断降至最低(也就是说,报告功能少于 4 个小时,数据加载功能少于 20 个小时)。他们决定使用选项 1 来执行迁移,以满足业务需求。下一节中将会更详细地讨论相关迁移步骤。

回页首

分步迁移程序

考虑到所有迁移战略阶段中的步骤,表 3 深入探讨了数据库从 BCU 恢复到 ISAS 的数据库迁移选项,成功消除了系统之间的节点差异:

表 3. 迁移过程

步骤 系统 任务描述 命令
1 BCU 停止 ETL 和报告作业 Non DB2 commands
2 BCU 停用 db2 实例 QUIESCE INSTANCE bculinux IMMEDIATE
3 BCU 停用数据库 DEACTIVATE DB BCUDB
4 BCU 创建从管理节点导出目录到所有数据节点的软链接 $HOME/db2backup/
ln -s /db2fs/bculinux/NODE0001 NODE1
ln -s /db2fs/bculinux/NODE0002 NODE2
............
ln -s /db2fs/bculinux/NODE0040 NODE40
5 BCU 将数据库离线备份到本地磁盘 目录分区:
db2_all "/"<<+0< db2 BACKUP DATABASE BCUDB TO $HOME/db2backup/NODE##/backup COMPRESS WITHOUT PROMPTING"
非并行目录分区:
db2_all "||/"<<-0< db2 BACKUP DATABASE BCUDB TO $HOME/db2backup/NODE##/backup COMPRESS WITHOUT PROMPTING"
6 BCU 验证数据库备份镜像 您可以使用以下脚本来并行触发所有分区上的检查备份命令
#!/bin/ksh
node=$(echo `db2 -x "select current dbpartitionnum from sysibm.sysdummy1"`)
if [[ $node -ge 10 ]]
db2ckbkp $HOME/db2backup/NODE${node}/backup/*NODE00${node}* > $HOME/db2backup/NODE${node}/backup/check${node}.out
else
db2ckbkp $HOME/db2backup/NODE${node}/backup/*NODE000${node}* > $HOME/db2backup/NODE${node}/backup/check${node}.out
fi
exit 0

验证签出文件并确保所有备份都正常。
7 BCU 将备份镜像复制到 ISAS 使用脚本中的 scp 或 sftp 命令将数据库备份镜像从源服务器复制到目标服务器
8 BCU
  • 启动实例
  • 启动 Cognos 服务来促进业务的报告访问
  • 允许加载新数据
  • 与业务进行通信
UNQUIESCE INSTANCE 命令以及与 Cognos 相关的命令
9 ISAS 禁用高可用性组件 TSA
  • 在管理节点上以 ROOT 用户身份运行命令 samctrl -M T 并运行 lssam 命令进行验证
    样例输出:
    Online IBM.ResourceGroup:SA-nfsserver-rg Automation=Manual Nominal=Online
    Online IBM.AgFileSystem:shared_db2home
  • 运行更改资源命令,通知 Reliable Scalable Cluster Technology(RSCT)不要重新启动节点,以免出现影响集群的任何通信问题
    chrsrc -c IBM.PeerNodeCritRsrcProtMethod=5
  • 禁用 DB2 集群集成
    db2 UPDATE DBM CFG USING CLUSTER_MGR NULL; db2stop; db2start
    备注:目标 ISAS 是预先构建的,已经包含为 65 个节点数据库定义的所有资源、分组和同等功能。
10 ISAS 备份目标系统中所有更改前的配置:
  • db2nodes.cfg
  • DB2 数据库管理员配置参数
  • DB2 数据库配置参数
  • DB2 注册表变量
  • 实例配置文件
  • TSA 策略
  • db2cfexp
  • sampolicy -s sampolicy_save.xml
  • cp -p ~/sqllib/cfg/db2ha.sys db2ha.sys.save
  • db2hareg -dump > hareg.dump.save
11 ISAS 终止现有数据库 shell 并停止实例 DROP DATABASE BCUDB; db2stop
12 ISAS 将数据库分区的数量减少到 41 并启动实例
  • 修改 db2nodes.cfg 文件,样例文件如下所示
    0 isasadm001 0 isasadm001
    1 isasdata001 1 isasdata001
    2 isasdata001 2 isasdata001
    .......
    .......
    40 isasdata005 7 isasdata005
  • db2start
13 ISAS 应用恢复前配置更改 将数据库管理器配置参数 DIAGLEVEL 更新为 4,并将 HEALTH_MON 更新为 OFF。
14 ISAS 先恢复数据库分区 0,然后再将剩余的 40 个数据库分区 NODE0001 到 NODE0040 进行恢复 目录分区:
db2_all "/"<<+0< db2 RESTORE DATABASE BCUDB FROM $HOME/db2backup/NODE##/backup WITHOUT ROLLING FORWARD WITHOUT PROMPTING"
非并行目录分区:
db2_all "||/"<<-0< db2 RESTORE DATABASE BCUDB FROM $HOME/db2backup/NODE##/backup WITHOUT ROLLING FORWARD WITHOUT PROMPTING"
15 ISAS 激活数据库并进行初步检查 ACTIVATE DATABASE BCUDB;
检查所有表空间状态,表数据可达性
16 ISAS 识别物化查询表 (Materialized Query Tables, MQT),提取 DDL,并终止所有操作
  • 列出 MQT 表
    SELECT TRIM(TABSCHEMA)||'.'||TRIM(TABNAME) fromSYSCAT.TABLES where TYPE='S';
  • 提取所有 MQT 对象的 DDL
    db2look -d BCUDB -e -xd-z <tabschema> -t <mqt-table> -o <tabschema>.<mqt-table>.ddl
  • 终止 MQT 表
    db2 "SELECT 'DROP TABLE '|| TRIM(TABSCHEMA)||'.'||TRIM(TABNAME)||';' from SYSCAT.TABLES where TYPE='S' " > dropMQT
    db2 -tvf dropMQT
17 ISAS
  • 检查异常状态表,如果有异常,则进行修正
  • 终止数据库上的事件监控器
  • 将所有 DMS 表空间的禁用自动调整大小置为可用
  • SELECT SUBSTR(rtrim(TABSCHEMA)), SUBSTR(rtrim(TABNAME), AVAILABLE FROM SYSIBMADM.ADMINTABINFO WHERE TABNAME = '<tbname>';
    SELECT substr(rtrim(TABSCHEMA)||'.'||rtrim(TABNAME),1,50) FROM SYSCAT.TABLES WHERE STATUS = 'C';
  • SET EVENT MONITOR <eventmon> STATE 0;
  • ALTER TABLESPACE <tbspace> AUTORESIZE YES;
18 ISAS 删除恢复历史文件并停用数据库 PRUNE HISTORY <date>;DEACTIVATE DB BCUDB;
19 ISAS 将新数据库分区从 41 增加到 64 个
  • db2stop; db2start
  • 从 NODE0041 增加到 NODE0048
    db2start DBPARTITIONNUM 41 ADD DBPARTITIONNUM HOSTNAME isasdata006 PORT 0 WITHOUT TABLESPACES
    .......
    .......
    db2start DBPARTITIONNUM 48 ADD DBPARTITIONNUM HOSTNAME isasdata006 PORT 7 WITHOUT TABLESPACES
  • 从 NODE0049 增加到 NODE0056
    db2start DBPARTITIONNUM 49 ADD DBPARTITIONNUM HOSTNAME isasdata007 PORT 0 WITHOUT TABLESPACES
    .......
    .......
    db2start DBPARTITIONNUM 56 ADD DBPARTITIONNUM HOSTNAME isasdata007 PORT 7 WITHOUT TABLESPACES
  • 从 NODE0057 增加到 NODE0064
    db2start DBPARTITIONNUM 57 ADD DBPARTITIONNUM HOSTNAME isasdata008 PORT 0 WITHOUT TABLESPACES
    .......
    .......
    db2start DBPARTITIONNUM 64 ADD DBPARTITIONNUM HOSTNAME isasdata008 PORT 7 WITHOUT TABLESPACES
样例输出:
08/06/2013 21:04:26 8 0 SQL1489I The add database partition server operation was successful. The new database partition server "41" is active
SQL1489I The add database partition server operation was successful. The new database partition server "41" is active.
备注:建议在每台新服务器上添加第一个分区后进行完整的 db2stop 和 db2start,在本例中是在添加 41、49 和 57 个分区之后执行此操作的。
20 ISAS 通过检查 db2nodes.cfg 文件确定已经将新数据库分区添加到实例中 您现在应该可以在 db2nodes.cfg 节点配置文件中看到节点 41 至 64
0 isasadm001 0 isasadm001
1 isasdata001 1 isasdata001
2 isasdata001 2 isasdata001
.......
.......
63 isasdata008 6 isasdata008
64 isasdata008 7 isasdata008
21 ISAS 在新添加的节点上添加临时表空间容器 ALTER TABLESPACE "DB2TMP" ADD (FILE '/db2fs/bculinux/NODE00 $N/BCUDB/temp/db2tmp_001' 80000) ON DBPARTITIONNUMS (41 to 64) AUTORESIZE NO;
22 ISAS 改变 IBMDEFAULTGROUPPDPG 数据库分区组
  • ALTER DATABASE PARTITION GROUP IBMDEFAULTGROUP ADD DBPARTITIONNUMS (41 to 64) WITHOUT TABLESPACES;
  • ALTER DATABASE PARTITION GROUP PDPG ADD DBPARTITIONNUMS (41 to 64) WITHOUT TABLESPACES;
样例输出:
SQL1759W Redistribute database partition group is required to change database partitioning for objects in database partition group "PDPG" to include some added database partitions or exclude some dropped database partitions. SQLSTATE=01618
23 ISAS 向扩展的 PDPG 分区添加容器路径 ALTER TABLESPACE "TS_LARGE_DATA" ADD (FILE '/db2fs/bculinux/NODE00 $N/BCUDB/data/ts_large_data' 90000) ON DBPARTITIONNUMS (41 to 65) AUTORESIZE YES;
24 ISAS 将数据库 BCUDB 离线备份到本地磁盘 这一步骤对于保存步骤 24 之前完成的工作很有必要。这些备份镜像可用于从数据重分配期间发生的任何故障中恢复,而且可以节约很多时间
25 ISAS 数据再分配的前提条件
  • UTIL_HEAP_SZ 数据库配置参数从 65536 增长到 200000
  • SORTHEAP 数据库配置参数从 8000 增长到 48000
  • 终止 Optim Performance Manager (OPM)
  • 将数据库配置参数 LOGARCHMETH1 设置为 OFF,以禁用事务日志归档流程
26 ISAS 在扩展的数据库分区上重新分配分区组 IBMDEFAULTGROUPPDPG 的数据
  • IBMDEFAULTGROUP 分区组上
    REDISTRIBUTE DATABASE PARTITION GROUP IBMDEFAULTGROUP NOT ROLLFORWARD RECOVERABLE UNIFORM DATA BUFFER 180000 INDEXING MODE DEFERRED STATISTICS NONE QUIESCE DATABASE YES;
  • PDPG 分区组上
    REDISTRIBUTE DATABASE PARTITION GROUP PDPG NOT ROLLFORWARD RECOVERABLE UNIFORM DATA BUFFER 180000 INDEXING MODE DEFERRED STATISTICS NONE QUIESCE DATABASE YES;
  • 访问表或重新启动数据库,在数据重新分配结束时激活索引重建。
使用命令 LIST UTILITIES SHOW DETAIL 轻松地监控数据重新分配。
27 ISAS 将数据库 BCUDB 离线备份到本地磁盘 该备份只是一个占位符,而且可以忽略。但是建议采用最新重新分配数据库备份的副本。
28 ISAS 执行重新分配后任务
  • 降低表空间最高数字
    ALTER TABLESPACE <tbspace> LOWER HIGH WATER MARK;
    ALTER TABLESPACE <tbspace> REDUCE (ALL x G);
    其中 x 表示将要收回的空间量。
  • 更新配置参数 LOGARCHMETH1, SORTHEAP, UTIL_HEAP_SZ 并重新启动实例
  • 使用步骤 (17) 中的可用脚本重新创建 MQT 表
  • 切换事件监控器 ON
  • 在所有表上执行 RUNSTATS
29 ISAS 将数据库第一次备份到 TSM BACKUP DATABASE BCUDB ON ALL DBPARTITIONNUMS USE TSM WITHOUT PROMPTING;
如果无法促进所需的 TSM 挂载点,则使用备份命令中的 DBPARTITIONNUMS (db-partition-number [to db-partition-number], …) 子句来备份数据库(以数据块的方式)。
30 ISAS 启用高可用性组件 TSA 并连接应用程序
  • 在管理节点上以 ROOT 用户身份运行命令 samctrl -M F 并运行 lssam 命令进行验证
    样例输出:
    Online IBM.ResourceGroup:SA-nfsserver-rg Nominal=Online Nominal=Online
    Online IBM.AgFileSystem:shared_db2home
  • 运行更改资源命令将 Reliable Scalable Cluster Technology(RSCT)恢复到临界资源保护方法。
    chrsrc -c IBM.PeerNodeCritRsrcProtMethod=0
  • 测试应用程序连接并将 ISAS 系统可用性传达给企业

回页首

其他信息

如果您尝试将数据库从数值较高的数据库分区源系统迁移到数值较低的数据库分区目标系统,则需要在步骤 12 中向目标系统添加额外的分区数量,并在步骤 20 中使用以下命令组成功恢复数据库后终止分区:

  1. 从分区 (x) 开始的其他分区上重新均匀地分配数据,其中 x 是您将要删除的数据库分区:
    REDISTRIBUTE DATABASE PARTITION GROUP PDPG UNIFORM DROP DBPARTITIONNUM (40);
  2. 促进所有应用程序连接并进行验证:
    FORCE APPPLICATIONS ALL;
  3. 在停止前执行分区终止验证:
    export DB2NODE=40;
    TERMINATE; DROP DBPARTITIONNUM VERIFY;
    SQL6034W Database 分区 “40” 未被任何数据库使用。
    如果预期分区正在使用中,那么您将获得 SQL6035W 警告消息。在这种情况下,db2diag.log 会让您了解是什么阻止了 drop dbpartitionnum 命令成功完成。
  4. 实际数据库分区删除语句:
    export DB2NODE=
    TERMINATE;STOP DATABASE MANAGER DROP DBPARTITIONNUM 40;
    SQL6076W Warning! 该命令将删除此实例中的节点上的所有数据库文件。在继续后面的操作之前,运行 DROP NODE VERIFY 命令,以确保该节点上没有任何用户数据。
    您想要继续吗? (y/n) y

您还可以执行将源数据库分区数量减少到目标服务器数量的流程;然后在目标系统上进行备份和还原。但请记住,这会导致比之前所述流程更多的中断。

回页首

结束语

本文介绍了如何使用 DB2 的数据库恢复技术和 DPF 横向扩展技术将数 TB 的数据库从 BCU 迁移到 ISAS,以满足业务需求。您现在应该能够调整这些步骤来满足您的数据库迁移需求,而不用考虑节点数量和配置。

回页首

致谢

特别感谢帮助我完成本文的一些优秀人物:

  • Colin A Chapman(DB2 专家,IBM UK)
  • Simon Woodcock(数据仓库专家,IBM Hursley Lab UK)
  • Nelson Coish(总裁,加拿大 Coish 咨询公司)
  • John Rutter(系统分析师,Reckitt Benckiser UK)
  • Karthikraj Kanagaraj(Sify 技术,UK)
  • Matt Gee (SBA, Reckitt Benckiser,UK)
正文到此结束
Loading...