anikikong
作者anikikong课题专家组·2015-07-01 13:50
数据库运维工程师·中国民生银行

DB2 pureScale 如何升级补丁包

字数 17289阅读 2608评论 2赞 4
DB2 pureScale 集群产品

DB2 pureScale 集群是一种兼备高扩展性和高可用性的数据库集群解决方案。这个解决方案整合了包括软硬件在内的多个产品。DB2 pureScale 集群采用的是共享存储的集群架构。

图 1. DB2 pureScale 集群的架构DB2 pureScale 集群的架构

这张图描述了 DB2 pureScale 的集群架构。DB2 pureScale 可以由多个主机(节点)组成,彼此通过 IB 网络和以太网通信,每个节点都连接到共享存储。集群内部通过自动负载均衡的功能调度各个节点的资源。从客户端来看,DB2 pureScale 就是一个数据库环境,不需要关心去连哪个节点以及集群是如何组成。DB2 pureScale 集群的关键技术就是借鉴的 IBM 大型机中成熟的全局锁定和内存管理技术。

在这个集群解决方案里面,软件产品包括管理共享存储的 GPFS 产品,整合所有资源的 TSA 产品,DB2 产品等。这些组件都包含在整套 DB2 产品的安装介质里面。DB2 pureScale 发布的新的补丁包就可能包含这三大产品的更新。所以在升级 DB2 pureScale 补丁包的时候尤其要注意检查这些产品是否需要升级,以及如何做到安全升级。

升级补丁包前的准备工作

在升级补丁包之前,需要确认 GPFS 和 TSA 是否需要升级,还需要完全停止 DB2 pureScale 数据库集群。在升级的过程中,要保证 DB2 pureScale 数据库不会被重启。

检查 TSA 版本

首先来查看新的补丁包中的 TSA 版本是否高于已安装的版本。查看工具已经包含在新的补丁包中。本案例中补丁包 DVD 被解压在 /home/temp/DB2v9.8/v9.8fp5 下面。

清单 1. TSA 已安装版本

# /home/temp/DB2v9.8/v9.8fp5/server/db2/aix/tsamp/db2cktsa -v install 3.2.6.2

清单 2. TSA 目标版本

# /home/temp/DB2v9.8/v9.8fp5/server/db2/aix/tsamp/db2cktsa -v media 3.2.7.1

在这个案例里面,TSA 的目标版本是 3.2.7.1,高于已安装版本 3.2.6.2,所以需要多 TSA 集群进行升级。

检查 GPFS 版本

检查 GPFS 版本的方式和检查 TSA 差不多,工具也包含在新的补丁包中。

清单 3. GPFS 已安装版本

# /home/temp/DB2v9.8/v9.8fp5/server/db2/aix/gpfs/db2ckgpfs -v install 3.3.0.14

清单 4. GPFS 目标版本

# /home/temp/DB2v9.8/v9.8fp5/server/db2/aix/gpfs/db2ckgpfs -v media 3.4.0.13

清单中列举的 GPFS 已安装版本 3.3.0.14 是低于目标版本 3.4.0.13 的,所以也需要升级 GPFS 集群软件和环境。

停止 DB2 pureScale 集群环境

DB2pureScale 集群环境具有很高的可用性。如果一些节点维护工作,例如给操作系统打补丁等需要停机的维护,整套集群并不需要停止,只需要停止相应节点的集群组件就可以了。等一个节点维护完成,重新加入到集群里,又可以接着维护下一个节点。最终在 DB2 集群一直存活的情况下完成对所有节点的维护。

但是如果是对 DB2 集群环境升级,整套集群就会受到影响,所以必须停集群维护。首先断开所有应用连接,然后运行 db2stop 命令停止数据库。

清单 5. 查看数据库停止状态

$ db2instance -list ID TYPE STATE HOME_HOST CURRENT_HOST ALERT PARTITION_NUMBER LOGICAL_PORT NETNAME -- ---- ----- --------- ------------ ----- ---------------- ------------ ------- 0 MEMBER STOPPED DEMODBM0 DEMODBM0 NO 0 0 DEMODBM0-ib0 1 MEMBER STOPPED DEMODBM1 DEMODBM1 NO 0 0 DEMODBM1-ib0 128 CF STOPPED DEMODBF0 DEMODBF0 NO - 0 DEMODBF0-ib0,DEMODBF0-ib1 129 CF STOPPED DEMODBF1 DEMODBF1 NO - 0 DEMODBF1-ib0,DEMODBF1-ib1 HOSTNAME STATE INSTANCE_STOPPED ALERT -------- ----- ---------------- ----- DEMODBF1 ACTIVE NO NO DEMODBF0 ACTIVE NO NO DEMODBM1 ACTIVE NO NO DEMODBM0 ACTIVE NO NO

db2stop 完成后,使用 db2instance 命令查看集群的状态,所有的 member 和 CF 的是 STOPPED 的状态。现在停止故障检查进程,防止实例后续被自动重启。

清单 6. 停止 db2fm 进程

$ /opt/IBM/db2/V98/bin/db2fm -i db2sdin1 -D

这个命令可以停止 db2fm 进程。然后我们需要查看故障监控协调器(FMC)是不是启动了。

清单 7. 查看 FMC 状态

-bash-3.2# /opt/IBM/db2/V98/bin/db2fmcu FMC: down

在本次的案例中 FMC 是没有启动的,状态是 down。如果 FMC 是启动的,输出结果会像这样“FMC: up: PID = 3232”。如果 FMC 是启动的,那么就需要查看有没有实例被配置成了在系统重启后也自动重启。

清单 8. 查看实例配置

-bash-3.2# /opt/IBM/db2/V98/instance/db2iset -i db2sdin1 all db2set MsgRC=1302, P1='', P2=''

在这个案例里面实例 db2sdin1 是没有这般配置的。如果有,那么输出会包含“DB2AUTOSTART=YES”。这种情况下就需要配置实例不自动重启。

清单 9. 禁止实例自动重启

/opt/IBM/db2/V98/instance/db2iauto -off db2sdin1

如果这边禁止实例自动重启,在升级完成之后,需要恢复到以前的配置状态,还可以通过这个命令配置实例自动重启。

清单 10. 配置实例自动重启

/opt/IBM/db2/V98/instance/db2iauto -on db2sdin1

在本次案例里面,并没有涉及到配置实例重启。现在数据库已经停止了,但是我们还需要停止每个节点上的实例服务。

清单 11. 停止节点实例服务

$ db2stop instance on DEMODBF1 SQL1064N DB2STOP processing was successful. $ db2stop instance on DEMODBF0 SQL1064N DB2STOP processing was successful. $ db2stop instance on DEMODBM1 SQL1064N DB2STOP processing was successful. $ db2stop instance on DEMODBM0 SQL1064N DB2STOP processing was successful.

停止完后可以再次查看一下集群的状态。

清单 12. 查看节点状态

$ db2cluster -cm -list -host DEMODBM0,DEMODBM1,DEMODBF0,DEMODBF1 -state HOSTNAME STATE ------------------------ ----------- DEMODBM0 ONLINE DEMODBM1 ONLINE DEMODBF0 ONLINE DEMODBF1 ONLINE

从这个清单可以看到所有的四个节点上面实例状态都是停止的。因为本次升级需要升级 TSA 和 GPFS 产品,所以需要把 TSA 集群和 GPFS 集群都设置为维护状态。

清单 13. 设置 TSA 集群为维护状态

# /home/db2sdin1/sqllib/bin/db2cluster -cm -enter -maintenance -all Domain 'db2domain_20120419170249' has entered maintenance mode.

清单 14. 设置 GPFS 集群为维护状态

# /home/db2sdin1/sqllib/bin/db2cluster -cfs -enter -maintenance -all The shared file system has sucessfully entered maintenance mode.

现在整套集群就已经完全停止了,下面就可以开始升级。

升级 DB2 pureScale 集群

升级 DB2 pureScale 集群产品和 DB2 其他的版本不太一样。以前我们可以在 DB2 的安装位置直接升级补丁包就可以。但是升级 DB2 pureScale 产品需要安装补丁包到一个新的位置,然后将实例迁移到这个位置。

安装 DB2 补丁包

安装 DB2 补丁包需要在工具里面指定原 DB2 安装位置和新安装位置。这个需要在所有节点都运行一次。新安装位置需要一致。注意检查新位置空间是否足够。

清单 15. 安装到新位置

#./installFixPack -b /opt/IBM/db2/V9.8 -L -p /opt/IBM/db2/V9.8FP5 DBI1017I installFixPack is updating the DB2 product(s) installed in location /opt/IBM/db2/V9.8. DB2 installation is being initialized. Total number of tasks to be performed: 43 Total estimated time for all tasks to be performed: 3168 second(s) Task #1 start Description: Preparing the system Estimated time 120 second(s) Task #1 end Task #2 start Description: Base Client Support for installation with root privileges Estimated time 3 second(s) Task #2 end Task #3 start Description: Product Messages - English Estimated time 12 second(s) Task #3 end Task #4 start Description: Base client support Estimated time 221 second(s) Task #4 end Task #5 start Description: Java Runtime Support Estimated time 3 second(s) Task #5 end Task #6 start Description: Java Help (HTML) - English Estimated time 3 second(s) Task #6 end Task #7 start Description: Base server support for installation with root privileges Estimated time 7 second(s) Task #7 end Task #8 start Description: Integrated Flash Copy Support Estimated time 354 second(s) Task #8 end Task #9 start Description: Global Secure ToolKit Estimated time 38 second(s) Task #9 end Task #10 start Description: Java support Estimated time 11 second(s) Task #10 end Task #11 start Description: SQL procedures Estimated time 3 second(s) Task #11 end Task #12 start Description: ICU Utilities Estimated time 48 second(s) Task #12 end Task #13 start Description: Java Common files Estimated time 19 second(s) Task #13 end Task #14 start Description: Base server support Estimated time 416 second(s) Task #14 end Task #15 start Description: IBM Software Development Kit (SDK) for Java(TM) Estimated time 222 second(s) Task #15 end Task #16 start Description: Connect support Estimated time 3 second(s) Task #16 end Task #17 start Description: Relational wrappers common Estimated time 3 second(s) Task #17 end Task #18 start Description: DB2 data source support Estimated time 12 second(s) Task #18 end Task #19 start Description: DB2 LDAP support Estimated time 3 second(s) Task #19 end Task #20 start Description: DB2 Instance Setup wizard Estimated time 8 second(s) Task #20 end Task #21 start Description: Control Server Estimated time 3 second(s) Task #21 end Task #22 start Description: Spatial Extender client Estimated time 3 second(s) Task #22 end Task #23 start Description: Communication support - TCP/IP Estimated time 3 second(s) Task #23 end Task #24 start Description: Base application development tools Estimated time 42 second(s) Task #24 end Task #25 start Description: ese dsf common Estimated time 11 second(s) Task #25 end Task #26 start Description: DB2 Update Service Estimated time 4 second(s) Task #26 end Task #27 start Description: Parallel Extension Estimated time 3 second(s) Task #27 end Task #28 start Description: EnterpriseDB code Estimated time 3 second(s) Task #28 end Task #29 start Description: Replication tools Estimated time 24 second(s) Task #29 end Task #30 start Description: Cluster caching facility Estimated time 15 second(s) Task #30 end Task #31 start Description: Sample database source Estimated time 4 second(s) Task #31 end Task #32 start Description: Informix data source support Estimated time 5 second(s) Task #32 end Task #33 start Description: Product Signature for DB2 Enterprise Server Edition with the pureScale Feature Estimated time 3 second(s) Task #33 end Task #34 start Description: IBM Tivoli System Automation for Multiplatforms (Tivoli SA MP) Estimated time 600 second(s) Task #34 end Task #35 start Description: IBM General Parallel File System (GPFS) Estimated time 600 second(s) Task #35 end Task #36 start Description: Installing or updating DB2 HA scripts for Tivoli SA MP Estimated time 40 second(s) Task #36 end Task #37 start Description: Installing or updating DB2 Cluster Scripts for GPFS Estimated time 40 second(s) Task #37 end Task #38 start Description: Adding GPFS license after gpfs version upgrade Estimated time 30 second(s) Task #38 end Task #39 start Description: Setting DB2 library path Estimated time 180 second(s) Task #39 end Task #40 start Description: Executing control tasks Estimated time 20 second(s) Task #40 end Task #41 start Description: Updating global registry Estimated time 20 second(s) Task #41 end Task #42 start Description: Updating the db2ls link Estimated time 1 second(s) Task #42 end Task #43 start Description: Registering DB2 licenses Estimated time 5 second(s) Task #43 end The execution completed successfully. For more information see the DB2 installation log at "/tmp/installFixPack.log.4391350".

这样 DB2 新的补丁包就被安装到了“/opt/IBM/db2/V9.8FP5”下面。检查安装日志确定没有问题。在此过程中,GPFS 和 TSA 软件包也已经没更新,但是 GPFS 和 TSA 的集群并没有被更新,就如 DB2 的实例也还没有完成更新。

升级 TSA 集群

在升级 TSA 集群之前,首先撤销 TSA 集群的维护状态。

清单 16. 撤销并查看 TSA 集群的维护状态

# /home/db2sdin1/sqllib/bin/db2cluster -cm -exit -maintenance -all Host 'DEMODBM0' has exited maintenance mode. Domain 'db2domain_20120419170249' has been started. # /home/db2sdin1/sqllib/bin/db2cluster -CM -VERIFY -MAINTENANCE Host 'DEMODBM1' is currently not in maintenance mode. A diagnostic log has been saved to '/tmp/ibm.db2.cluster.TXaxUa'.

查看一下 TSA 集群的当前版本是什么。

清单 17. 查看 TSA 集群版本

# lsrpdomain Name OpState RSCTActiveVersion MixedVersions TSPort GSPort db2domain_20120419170249 Online 3.1.0.5 Yes 12347 12348

现在的 RSCTActiveVersion 是 3.1.0.5,这个还是老的版本。需要使用 TSA 的命令升级集群。

清单 18. 升级 TSA 集群 domain

# runact -c IBM.PeerDomain CompleteMigration Options=0 Resource Class Action Response for CompleteMigration # samctrl -m Ready to Migrate! Are you Sure? [Y|N]:. Y

运行完成后再次查看 TSA 的集群版本。

清单 19. 查看升级后集群 domain 版本

# lsrpdomain Name OpState RSCTActiveVersion MixedVersions TSPort GSPort db2domain_20120419170249 Online 3.1.2.2 No 12347 12348

TSA 的集群 domain 已经升级到了 3.1.2.2 版本。

升级 GPFS 集群

如果仔细查看当时安装补丁包的日志,最后一部分就是说明 GPFS 升级还有后续步骤。使用 db2cluster 命令更新 GPFS 集群系统。

清单 20. 升级 GPFS 集群

# /opt/IBM/db2/V9.8FP5/bin/db2cluster -cfs -commit The shared file system cluster has been successfully updated to version '3.4.0.13'.

上面所展示的对 GPFS 和 TSA 集群的升级工作只需要在单个节点做一次就行。

升级实例

先前已经在所有节点安装了补丁包到新的位置,现在需要在每个节点上迁移(升级)实例使用新的位置的 DB2 介质。

清单 21. 更新实例

# /opt/IBM/db2/V9.8FP5/instance/db2iupdt db2sdin1 DBI1446I The db2iupdt command is running, please wait. DB2 installation is being initialized. Total number of tasks to be performed: 7 Total estimated time for all tasks to be performed: 429 second(s) Task #1 start Description: Installing or updating DB2 HA scripts for Tivoli SA MP Estimated time 40 second(s) Task #1 end Task #2 start Description: Installing or updating DB2 Cluster Scripts for GPFS Estimated time 40 second(s) Task #2 end Task #3 start Description: Setting default global profile registry variables Estimated time 1 second(s) Task #3 end Task #4 start Description: Register NTP Estimated time 40 second(s) Task #4 end Task #5 start Description: Initializing instance list Estimated time 5 second(s) [YOU HAVE NEW MAIL] Task #5 end Task #6 start Description: Configuring DB2 instances Estimated time 300 second(s) [YOU HAVE NEW MAIL] Task #6 end Task #7 start Description: Updating global profile registry Estimated time 3 second(s) Task #7 end The execution completed successfully. For more information see the DB2 installation log at "/tmp/db2iupdt.log.43778104". DBI1070I Program db2iupdt completed successfully.

更新完成后,整套 DB2 pureScale 集群的升级基本都已经完成了。这个时候需要确认一下在升级的过程中没有损坏整个集群。首先查看一下当前实例状态。

清单 22. 查看实例状态

db2instance -list ID TYPE STATE HOME_HOST CURRENT_HOST ALERT PARTITION_NUMBER LOGICAL_PORT NETNAME -- ---- ----- --------- ------------ ----- ---------------- ------------ ------- 0 MEMBER STOPPED DEMODBM0 DEMODBM0 NO 0 0 DEMODBM0-ib0 1 MEMBER STOPPED DEMODBM1 DEMODBM1 NO 0 0 DEMODBM1-ib0 128 CF STOPPED DEMODBF0 DEMODBF0 NO - 0 DEMODBF0-ib0,DEMODBF0-ib1 129 CF STOPPED DEMODBF1 DEMODBF1 NO - 0 DEMODBF1-ib0,DEMODBF1-ib1 HOSTNAME STATE INSTANCE_STOPPED ALERT -------- ----- ---------------- ----- DEMODBF1 ACTIVE NO NO DEMODBF0 ACTIVE NO NO DEMODBM1 ACTIVE NO NO DEMODBM0 ACTIVE NO NO

数据库集群现在是停止的状态。每个节点上的实例服务也是停止的。现在使用 db2cluster 工具查看集群的资源情况。

清单 23. 检查集群资源

$ db2cluster -verify -resources Cluster manager resource states for the DB2 instance are consistent.

资源是一致的,这个时候就可以启动 DB2 pureScale 集群。

清单 24. 检查集群资源

$ db2start instance on DEMODBM0 SQL1063N DB2START processing was successful. $ db2start instance on DEMODBM1 SQL1063N DB2START processing was successful. $ db2start instance on DEMODBF0 SQL1063N DB2START processing was successful. $ db2start instance on DEMODBF1 SQL1063N DB2START processing was successful.

清单 25. 检查集群资源

$ db2start 07/13/2012 20:01:38 0 0 SQL1063N DB2START processing was successful. 07/13/2012 20:01:40 1 0 SQL1063N DB2START processing was successful. SQL1063N DB2START processing was successful.升级后续工作

实例升级完成后,原先停止的数据库需要重新上线。DB2 补丁包的升级可能会对数据库内的对象有改变,所以数据库也需要进行更新。

升级数据库

DB2 提供了 db2updv98 这样的工具(在 DB2 V97 等单击版本里面也提供了类似工具)。

清单 26. 升级数据库

$ db2updv98 -d DEMODB _________________________________________________________________________ _____ DB2 Service Tools _____ I B M db2updv98 This tool is a service utility designed to update a DB2 Version 9.8 database to the current fixpak level. _________________________________________________________________________ DB2 Universal Database Version 9.8, 5622-044 (c) Copyright IBM Corp. 2009 Licensed Material - Program Property of IBM IBM DATABASE 2 Database update to current fix pack tool db2updv98 completed successfully for database 'DEMODB'.

如果有多个数据库,每个数据库都需要升级。

重新绑定

对于每一个数据库,都需要在更新完成后重新绑定绑定文件。命令如下所示:

清单 27. 绑定文件

db2 terminate db2 CONNECT TO DEMODB db2 BIND /home/db2sdin1/sqllib/bnd/db2schema.bnd BLOCKING ALL GRANT PUBLIC SQLERROR CONTINUE db2 BIND /home/db2sdin1/sqllib/bnd/@db2ubind.lst BLOCKING ALL GRANT PUBLIC ACTION ADD db2 BIND /home/db2sdin1/sqllib/bnd/@db2cli.lst BLOCKING ALL GRANT PUBLIC ACTION ADD db2 terminate

对于每个数据库,也可以重新绑定程序包。

清单 28. 绑定包

$ db2rbind DEMODB -l sx1bind.log all Rebind done successfully for database 'DEMODB'.

最后先前与数据库相关的一些停止的工作需要重新进行。例如定时任务,监控系统等。

结束语

本文介绍了如何升级 DB2 pureScale 的整个集群,在此过程中需要遵循的流程和使用到的工具。升级 DB2 的补丁包是一种比较低风险的操作,但是注意安全却是最主要的。其实最关键的却不是前面介绍的技术细节,而是做好备份,降低风险!

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论2 条评论

wuwenpinwuwenpin软件开发工程师南京
2018-07-07 16:50
学习了!
windywindy数据库管理员KSRCB
2018-07-05 23:23
孔兄,看了文章很受用,很详细。 我从10.5.0.8升级到10.5.0.9的时候碰到一个问题,在升级GPFS的时候一致报update到旧版本: srvdb2ps3:/opt/ibm/db2/V10.5FP9/bin # /opt/ibm/db2/V10.5FP9/bin/db2cluster -cfs -commit The shared file system cluster has been successfully updated to version ‘4.1.1.4’. srvdb2ps3:/u01/server_t/db2/linuxamd64/gpfs # ./db2ckgpfs -v install 4.1.1.11.2 srvdb2ps3:/opt/ibm/db2/V10.5FP9/instance # rpm -qa | grep -i gpfs gpfs.base-4.1.1-11.2 gpfs.ext-4.1.1-11.2 gpfs.gskit-8.0.50-47 gpfs.msg.en_US-4.1.1-11.2 gpfs.gpl-4.1.1-11.2 gpfs.docs-4.1.1-11.2 我在进行./installFixPack -b /opt/IBM/db2/V10.5 -L -p /opt/IBM/db2/V10.5FP9的时候爆了如下错误: ERROR: The DB2 installer detected that there is a user managed GPFS cluster exist on the host. You must manually update your GPFS installation: 所以我手动更新了gpfs,我怀疑是这个原因导致的。 请孔兄记帮忙分析下
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广