DB2 pureScale集群是一种兼备高扩展性和高可用性的数据库集群解决方案。这个解决方案整合了包括软硬件在内的多个产品。DB2 pureScale集群采用的是共享存储的集群架构。 图1. 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. 安装到新位置# /home/temp/DB2v9.8/v9.8fp5/server/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的补丁包是一种比较低风险的操作,但是注意安全却是最主要的。其实最关键的却不是前面介绍的技术细节,而是做好备份,降低风险! |
文章转载自ibm软件技术联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





