DB2 pureScale 新特性 -- Member Restart

王富国, 软件工程师, IBM
 
王婧霖, 软件工程师, IBM
 

简介: DB2 pureScale 作为一个完美的高可用性的数据库解决方案,吸收并有机的整合了多项技术,构成了多个高性能组件,为数据库提供服务。例如基于集群、磁盘共享的架构有效的使用系统资源,基于高可靠的 powerHA pureScale 技术使系统具备持续的可用性。本文重点介绍其中一个重要部件 - Member,并通过实例详细介绍 DB2 pureScale 是如何通过它实现系统的持续可用性。

引言

DB2 pureScale 作为一个完美的高可用性的数据库解决方案,吸收并有机的整合了多项技术,构成了多个高性能组件,为数据库提供服务。例如基于集群、磁盘共享的架构有效的使用系统资源,基于高可靠的 powerHA pureScale 技术使系统具备持续的可用性。本文重点介绍其中一个重要部件,Member,并通过实例详细介绍 DB2 pureScale 是如何通过它实现系统的持续可用性。

如图 1 所示,在 DB2 pureScale 系统中,当 DB2 client 连接到数据库服务器,连接被转向 Member,Member 负责处理数据库请求,PowerHA pureScale 为数据库系统提供基础架构服务,共享磁盘存储存放数据提供给所有 Member 访问。


图 1. pureScale 主要部件
图 1. pureScale 主要部件

DB2 Members

Member 很像一个 DB2 ESE 节点,它有自己的 db2sysc 进程、buffer pool、内存区域和日志文件,Member 通过集群文件系统访问共享的数据。当有 DB2 客户端连接到数据库服务器时,连接会被指向某个 Member,由 Member 处理客户端的请求。推荐在一台主机上配置一个 Member。

PowerHA pureScale servers (CFs)

DB2 pureScale 中的 CF 组件,是对 IBM PowerHA pureScale server 技术的使用,利用一个全局的锁管理机制协调、管理锁,避免不同的 member 访问相同表数据时发生冲突。同时,通过共享的 buffer pool 的使用,保持所有 Member 的页缓冲的一致性。CFs 提供一个共享的通讯区域(shared communication area, SCA),为 Member 之间提供通讯服务。

DB2 cluster services

DB2 集群服务负责进行心跳故障检测和启动必要的恢复操作,同时它也负责提供集群文件系统,作为一个公用的文件系统让每台主机都能访问。DB2 集群服务整合了 IBM Tivoli System Automation for Multiplatforms(Tivoli SA MP)、IBM Reliable Scalable Clustering Technology(RSCT) 和 IBM General Parallel File System(GPFS) 等技术。

Shared disk storage

DB2 pureScale 实例建立在共享存储之上。共享存储用来存放数据库数据文件、db2 实例的配置文件以及日志文件、原数据等数据库相关信息。

Member restart 是在一个发生故障、不能正常工作的 Member 上重新启动数据库服务器进程的过程,并且在对应的数据库上完成 Member crash recovery。 Member 所在的主机,无论是软件故障,还是硬件问题导致 Member 毁坏,进而无法正常工作。DB2 cluster services 监测到 Member 故障,就会自动重新启动这个 Member,即执行 Member restart 过程。这个过程可以发生在 Member 所在的主机上,这样被称作 local restart, 也可以发生在其他 Member 所属的主机上,这种情况被称作 restart light.。

local restart

如果因为软件原因导致一个 Member 出现故障,无法正常工作,如果这时 Member 所属的主机依旧处于活动,可工作状态,DB2 cluster services 会尝试作 local restart。Local member restart 会减少对内存的使用,以确保处于 in-flight 状态的数据可以被很快的恢复到一致的状态。当所有的处于 in-flight 状态的数据都被恢复后,Member 使用正常的内存使用模式对内存进行初始化,此时的内存容量可供给所有的事务进程使用。

restart light

如果某个 Member 所在的主机处于非活动状态,或者 Member 的 local restart 失败了,这时这个 Member 就会被安排在在其他 Member 所在的主机上进行重新启动,即运行 restart light 过程。

在 restart light 成功完成后,Member 等待被重新部署回自己所属的主机,此时它不会处理任何新的事务。如果 Member 所属的主机也可以正常使用,Member 会被 DB2 cluster services 自动部署回主机,变成正常的活跃 Member,此时它又能处理新事务了。

自动启动 Member restart

参数 autorestart 决定着 database manager 是否在数据库非正常停止后自动重新启动,并执行 crash recovery。autorestart 的值范围是 [On,Off], 默认为 On。

如果参数被置为 ON,当有新的数据库连接创建时,如果需要做 crash recovery,它就会被自动运行。

手动启动 Member restart

通常情况下,Member crash recovery 是自动运行的,无需人工干预。但是,当参数 autorestart 被置为 OFF 时,或者当 cluster management 处于非活动状态时,需要手动启动 Member crash recovery 过程。

运行命令“RESTART DATABASE”可以启动 Member crash recovery 过程。

如果因为断电或者其他的硬件问题导致 Member 不能正常工作,在解决了故障之后,你一定很想知道 Member 是否已经成功重新启动,是否能正常开始工作了。可以通过 DB2_MEMBER 视图检查 DB2 pureScale 实例中所有 member 的运行状态,也可以使用 DB2_GET_INSTANCE_INFO 表函数来查询指定主机。

本例以通过查询 DB2_MEMBER 视图,检查 MEMBER 的状态,SQL 语句如下:

 SELECT ID,varchar(STATE,21) AS STATE, 
 varchar(HOME_HOST,10) AS HOME_HOST, 
 varchar(CURRENT_HOST,10) AS CUR_HOST, 
 ALERT 
 FROM SYSIBMADM.DB2_MEMBER 


清单 1. 所有的 MEMBER 都运行在自己的主机上,运行状态正常
				
 ID STATE HOME_HOST CUR_HOST ALERT
 ------ --------------------- ---------- ---------- -------- 
 1 STARTED   HOSTA HOSTANO 
 2 STARTED  HOSTB HOSTBNO 
 3 STARTED  HOSTC HOSTCNO 

 3 record(s) selected. 



清单 2. 有一个 Member 正在 restart 的过程中。
				
 ID STATE HOME_HOST CUR_HOSTALERT 
 ------ --------------------- ---------- ---------- -------- 
 1 WAITING_FOR_FAILBACK HOSTA HOSTANO 
 2 STARTED HOSTBHOSTB
				NO 
 3 STARTED HOSTC HOSTCNO 

 3 record(s) selected. 


清单 3. MEMBER 0 不能进行 local restart,处于 restart light 状态
				
 ID STATE HOME_HOST CUR_HOSTALERT 
 ------ --------------------- ---------- ---------- -------- 
 1 WAITING_FOR_FAILBACK HOSTA HOSTBNO 
 2 STARTED HOSTB HOSTBNO 
 3 STARTED HOSTC HOSTCNO 

 3 record(s) selected. 

此时,可以通过 DB2_CLUSTER_HOST_STATE 查看主机的状态,得知 HOSTA 处于非活动状态。

 HOST STATESTOPPED ALERT 
 ---------- -------- ------- -------- 
 HOSTB ACTIVE NONO 
 HOSTA INACTIVE NOYES 
 HOSTC ACTIVE NONO 

 3 record(s) selected. 


List Utilities 命令

对于 restart light 模式的 Member,我们可以在任意一个处于活跃状态的 Member 上使用 LIST UTILITIES 命令进行监控。LIST UTILITIES 命令能够监控所有 Member 的 recovery 状态,包括处于 restart light 状态的 Member。如下所示:


清单 4. List Utilities

				
 LIST UTILITIES SHOW DETAIL 

 ID= 1 
 Type= MEMBER CRASH RECOVERY 
 Database Name= SAMPLE 
 Partition Number= 1 
 Description= Member Crash Recovery (Light Mode) 
 Start Time= 07/01/2010 15:20:05.646020 
 State= Executing 
 Invocation Type= Automated 
 Progress Monitoring: 
 Estimated Percentage Complete = 0 
 Phase Number [Current]= 1 
 Description= Forward 
 Total Work= 4193976 bytes 
 Completed Work= 0 bytes 
 Start Time= 07/01/2010 15:20:05.646121 
 Phase Number= 2 
 Description= Backward 
 Total Work= 4193976 bytes 
 Completed Work
				= 0 bytes 
 Start Time= Not Started 



其他方法

函数 DB2_GET_INSTANCE_INFO,视图 DB2_MEMBER,命令 LIST INSTANCE 和 DB2INSTANCE 都可以用来监测 DB2 pureScale 环境在某一时刻的状态,可以知道是否有 Member 处于 restart light 状态,它正在哪台主机上运行,当前 restart light 的状态是什么。 在下面的例子里,通过 DB2_MEMBER 视图,我们可以看到 Member 1 处于 restart light 模式,它正运行在 HOSTB 上。


清单 5. 查看视图 DB2_MEMBER

				
 SELECT ID,
				varchar(HOME_HOST,10) AS HOME_HOST, 
 varchar(CURRENT_HOST,10) AS CURRENT_HOST, 
 varchar(STATE,21) AS STATE, 
 ALERT 
 FROM SYSIBMADM.DB2_MEMBER 

 ID HOME_HOST CURRENT_HOST STATEALERT 
 ------ --------- ------------ ---------- ----- 
 1 HOSTA HOSTBRESTARTING NO 
 2 HOSTB HOSTB STARTEDNO 
 3 HOSTC HOSTC STARTEDNO 

 3 record(s) selected. 

restart light 过程实例

通过这个实例,我们来介绍 Member restart 的具体过程。当一个主机无法正常工作,导致所属的 Member 开始 restart light 的过程。

环境配置

共有 5 台主机,分别运行 Member1, Member2, Member3 和 CF。如下所示:

 MEMBER_ID TYPE STATEHOME_HOST CURRENT_HOST ALERT 
 --------- ------- ------- --------- ------------ ----- 
 1 MEMBER STARTED HOSTA HOSTA NO
 2 MEMBER STARTED HOSTB HOSTB NO
 3 MEMBER STARTED HOSTC HOSTC NO
				128 CF PRIMARY HOSTE - NO
				129 CF PEER HOSTF - NO
			

主机发生故障

因为电源问题,导致主机 HOSTA 出现故障。DB2 cluster services 不能在 HOSTA 上重新启动 Member1,需要在另外一个可用的主机上运行 restart light 过程来重新启动这个 Member.

此时,LIST INSTANCE 命令显示 member 1 的状态是 RESTARTING ,运行在 HOSTB 上。HOSTA 的状态是 INACTIVE , 因为在 HOSTA 上的 instance 没有被人为的停止,所以,instance_stopped 的状态是 no.

 LIST INSTANCE 

 MEMBER_ID TYPE STATEHOME_HOST CURRENT_HOST ALERT 
 --------- ------- ---------- --------- ------------ ----- 
 1 MEMBER RESTARTING HOSTA HOSTB NO
 2 MEMBER STARTED HOSTB HOSTB NO
 3 MEMBER STARTED HOSTC HOSTC NO
				128 CF PRIMARY HOSTE - NO
				129 CF PEER HOSTF - NO


 HOSTNAME STATEINSTANCE_STOPPED ALERT 
 -------- -------- ---------------- ----- 
 HOSTA INACTIVE NOYES 
 HOSTB ACTIVE NONO 
 HOSTC ACTIVE NONO 
 HOSTE ACTIVE NONO 
 HOSTF ACTIVE NONO 

等待故障恢复

restart light 过程启动后,在每个需要的数据库上都会运行 Member crash recovery。Member crash recovery 完成后,Member 1 处于 WAITING_FOR_FAILBACK 状态,等待重新在 HOSTA 上启动,Member1 此时并不处理新的事务。

 LIST INSTANCE 

 MEMBER_ID TYPE STATEHOME_HOST CURRENT_HOST ALERT 
 --------- ------- -------------------- --------- ------------ ----- 
 1 MEMBER WAITING_FOR_FAILBACK HOSTA HOSTB NO
 2 MEMBER STARTED   HOSTB HOSTB NO
 3 MEMBER STARTED  HOSTC HOSTC NO
				128 CF PRIMARY  HOSTE - NO
				129 CF PEER  HOSTF - NO


 HOSTNAME STATEINSTANCE_STOPPED ALERT 
 -------- -------- ---------------- ----- 
 HOSTA INACTIVE NOYES 
 HOSTB ACTIVE NONO 
 HOSTC ACTIVE NONO 
 HOSTE ACTIVE NONO 
 HOSTF ACTIVE NONO 

主机故障解决

电源问题解决以后了,HOSTA 又变成活跃状态。

 LIST INSTANCE 

 MEMBER_ID TYPE STATEHOME_HOST CURRENT_HOST ALERT 
 --------- ------- -------------------- --------- ------------ ----- 
 1 MEMBER WAITING_FOR_FAILBACK HOSTA HOSTB NO
				2 MEMBER STARTED HOSTB HOSTB NO
				3 MEMBER STARTED HOSTC HOSTC NO 
 128 CF PRIMARY HOSTE - NO
				129 CF PEER HOSTF - NO


 HOSTNAME STATEINSTANCE_STOPPED ALERT 
 -------- ------ ---------------- ----- 
 HOSTA ACTIVE NONO 
 HOSTB ACTIVE NONO 
 HOSTC ACTIVE NONO 
 HOSTE ACTIVE NONO 
 HOSTF ACTIVE NONO 

 

在所属主机上恢复 Member

DB2 cluster services 检测到 HOSTA 处于活跃状态,会自动在 HOSTA 上恢复在 Member 1。

此时,Member1 的状态是 RESTARTING 。

 LIST INSTANCE SHOW DETAIL 

 MEMBER_ID TYPE STATEHOME_HOST CURRENT_HOST ALERT 
 --------- ------- ---------- --------- ------------ ----- 
 1 MEMBER RESTARTING  HOSTA HOSTA NO
				2 MEMBER STARTED  HOSTB HOSTB NO
				3 MEMBER STARTED  HOSTC HOSTC NO
				128 CF PRIMARY  HOSTE - NO
				129 CF PEER  HOSTF - NO


 HOSTNAME STATEINSTANCE_STOPPED ALERT 
 -------- ------ ---------------- ----- 
 HOSTA ACTIVE NONO 
 HOSTB ACTIVE NONO 
 HOSTC ACTIVE NONO 
 HOSTE ACTIVE NONO 
 HOSTF ACTIVE NONO 


Member 在所属主机完成启动

Member 1 在 HOSTA 上成功完成了 Member restart,它的状态变成了 STARTED,现在这个 Member 可以接受用户的连接,处理新的事务了。使用 LIST INSTANCE 命令可以看到此时 DB2 pureSacle 环境的状态与实例开始时一样了。

本文简单的对 DB2 pureScale 中的 Member 进行了介绍,并通过实例说明了如何启动 Member restart 和如何监测 Member 的状态。

原文链接:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1008wangfg/index.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15082138/viewspace-672894/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15082138/viewspace-672894/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值