转载

使用 Tivoli System Automation for Multiplatforms 在一个 DB2 实例中配置多个 HADR数据库来实现...

HADR 和 Tivoli System Automation for Multiplatforms 简介

高可用性灾难恢复 (HADR) 是 DB2 的一个集成特性,它为 DB2 Enterprise Server Edition 和 DB2 pureScale® 提供了高可用性和灾难恢复支持。它是一种复制技术,将事务日志从主要数据库传输到备用数据库,并在备用数据库上应用这些日志让主要和备用数据库保持同步。如果主要数据库由于计划性维护活动或计划外的宕机而变得不可用,那么备用数据库将会承担主要数据库的角色。

下载DB2 和 Tivoli System Automation for Multiplatforms 的一个试用版。

Tivoli System Automation for Multiplatforms 是一个高可用性集群解决方案。它拥有检测系统故障和发起自动更正操作的机制,比如在无需用户干预的情况下重新启动资源或故障转移到备份资源。使用 Tivoli System Automation for Multiplatforms 配置 HADR 数据库的自动故障转移具有许多优势。

使用 Tivoli System Automation for Multiplatforms 的 HADR 数据库自动故障转移

如果 DB2 数据库配置了 HADR,但没有配置某种类型的集群管理器,那么数据库管理员就需要手动发出命令来让备用数据库承担主要数据库的角色。这需要数据库管理员手动监视系统的任何故障。

从 DB2 9.5 开始,DB2 产品中预先封装了 Tivoli System Automation for Multiplatforms,为配置 HADR 数据库的自动故障转移配提供了一个集成解决方案。基本上讲,可以使用 Tivoli System Automation for Multiplatforms 创建一个包含 HADR 主要和备用数据库机器的集群。然后,Tivoli System Automation for Multiplatforms 集群管理器可以监视集群的任何故障事件,比如系统崩溃或 DB2 实例崩溃。随后它会执行需要的更正操作(比如重新启动实例或将实例故障转移到备用数据库),以便确保高可用性。

回页首

基本概念

理解 db2haicu(DB2 提供来使用 Tivoli System Automation for Multiplatforms 设置自动故障转移的工具)、虚拟 IP 和自动客户端重新路由很重要。

db2haicu

DB2 9.5 及更高版本提供了一个叫做 db2haicu(DB2 高可用性实例配置实用程序)的基于文本的实用程序,用于配置和管理高度可用的数据库。该实用程序需要各种各样的输入,比如主要和备用机器细节、网络细节和 HADR 数据库名称。

它可以在两种模式下运行:交互式或使用 XML 输入文件。在交互式模式下,系统会提示用户输入必要的详细信息,以便创建 System Automation for Multiplatforms 集群,并为数据库配置高可用性。对于 XML 输入文件,输入参数包含在该文件中并传递到 db2haicu。该实用程序将会解析此 XML 文件来收集与集群和数据库相关的各种细节,并执行必要的配置。

如何在交互式模式下使用 XML 文件运行 db2haicu 实用程序,这将在使用 db2haicu 设置高可用性一节中讨论。

虚拟 IP

可以将虚拟 IP 地址创建为一个公共 IP 地址,客户端应用程序可以使用该地址连接到主要数据库。在系统故障和后续的故障转移期间,Tivoli System Automation for Multiplatforms 将虚拟 IP 地址分配给备用数据库,后者承担了主要数据库的角色。这使得客户端应用程序能够无缝连接到新的主要数据库。

自动客户端重新路由

在备用数据库变成主要数据库时,自动客户端重新路由 (ACR) 特性自动将连接到主要数据库的客户端重新路由到该备用数据库。配置 ACR描述了如何设置 ACR。在使用 Tivoli System Automation for Multiplatforms 的高可用性设置中,虚拟 IP 是配置 ACR 的首选方法。

回页首

使用 Tivoli System Automation for Multiplatforms 设置高可用性

本节将介绍使用 Tivoli System Automation for Multiplatforms 为多个在同一个实例下运行的 DB2 HADR 数据库对配置自动故障转移的前提条件。图 1 显示了本教程中使用的示例网络的拓扑结构。

图 1. 使用 TSA 为多网络 HADR 拓扑结构配置自动故障转移

使用 Tivoli System Automation for Multiplatforms 在一个 DB2 实例中配置多个 HADR数据库来实现...

该拓扑结构中有两个节点:

  • linuxnode01:主要节点,托管 HADR 主要数据库 HADRDB1、HADRDB2 和 HADRDB3
  • linuxnode02:备用节点,托管各个 HADR 备用数据库

这些节点是使用两个网络来连接的:一个公用网和一个私有网。客户端应用程序使用公用网中托管的虚拟 IP 地址来连接 HADR 数据库。私有网用于在主要和备用数据库之间执行 HADR 复制。在私有网不可用时,可以使用同一个网络来执行 HADR 复制和客户端连接。

设置网络

要设置网络:

  1. 向您网络中的适配器分配一个静态 IP 地址。该示例使用了两个网络适配器:eth0 和 eth1,前者连接到客户端要连接的公用网,后者连接到用于执行 HADR 复制的私有网。

    主要节点 (linuxnode01):

    • eth0:9.26.97.215 (IP)、255.255.252.0(子网掩码)
    • eth1:198.72.81.88 (IP)、255.255.255.0(子网掩码)

    备用节点 (linuxnode02):

    • eth0:9.26.96.102 (IP)、255.255.252.0(子网掩码)
    • eth1:198.72.81.89 (IP)、255.255.255.0(子网掩码)

    公共和私有网需要位于不同的子网掩码上。

  2. 向 /etc/hosts 文件添加一个条目,将公共 IP 地址映射到它们的主机名:
    • 9.26.97.215 linuxnode01 linuxnode01. fullyQualifiedDomainName .com
    • 9.26.96.102 linuxnode02 linuxnode02. fullyQualifiedDomainName .com
  3. 确保 hostname 命令在每个机器上执行时,这会提供机器名称或完全限定的域名作为输出。在 db2haicu 实用程序提示节点名称时需要提供同一个名称。在本例中,linuxnode01 上的 hostname 命令的输出必须为 linuxnode01 或 linuxnode01. fullyQualifiedDomainName .com。
  4. 确保主要和备用节点都能通过公共和私有网 ping 对方。对于本例,需要验证以下命令是否成功完成:
    1. 主要节点 (linuxnode01)
      • ping linuxnode02
      • ping 198.72.81.89
    2. 备用节点 (linuxnode02):
      • ping linuxnode01
      • ping 198.72.81.88
  5. 确保机器 linuxnode01 的 ~/sqllib/db2nodes.cfg 具有 0 个 linuxnode01。还需要为 linuxnode02 机器检查此情形。
  6. 确保主要节点和备用节点上的时钟是同步的。

设置 HADR

使用 Tivoli System Automation for Multiplatforms 设置高可用性之前,必须为所有 3 个数据库设置 HADR:HADRDB1、HADRDB2 和 HADRDB3。

如图 1所示,我们在主要节点 linuxnode01 上创建了一个名为 db2inst1 的主要 DB2 实例,在备用实例上创建了一个名为 db2inst1 的备用 DB2 实例。主要数据库 HADRDB1、HADRDB2 和 HADRDB3 在 DB2 实例 db2inst1 中创建。

启用前滚恢复后,主要数据库需要备份到主要 DB2 实例上。该备份可以还原到备用 DB2 实例上。在这之后,需要在主要和备用数据库上更新与 HADR 相关的数据库配置参数。

要在主要和备用实例上为数据库 HADRDB1 设置的数据库配置参数如清单 1 和清单 2 所示。

该输出适用于 DB2 10.5。如果使用更早的版本,您可能不会看到与本例中相同的条目。

清单 1. 主要节点:主要节点上的 HADR 数据库配置

db2 get db cfg for hadrdb1 | grep -i hadr Database Configuration for Database hadrdb1 HADR database role = PRIMARY  HADR local host name (HADR_LOCAL_HOST) = 198.72.81.88 HADR local service name (HADR_LOCAL_SVC) = 49868 HADR remote host name (HADR_REMOTE_HOST) = 198.72.81.89 HADR remote service name (HADR_REMOTE_SVC) = 49868 HADR instance name of remote server (HADR_REMOTE_INST) = db2inst1 HADR timeout value (HADR_TIMEOUT) = 120  HADR target list (HADR_TARGET_LIST) = HADR log write synchronization mode (HADR_SYNCMODE) = SYNC  HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(53248) HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0  HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 300

清单 2. 备用节点:备用节点上的 HADR 数据库配置

db2 get db cfg for db hadrdb1 | grep -i hadr Database Configuration for Database hadrdb HADR database role = STANDBY  HADR local host name (HADR_LOCAL_HOST) = 198.72.81.89 HADR local service name (HADR_LOCAL_SVC) = 49868 HADR remote host name (HADR_REMOTE_HOST) = 198.72.81.88 HADR remote service name (HADR_REMOTE_SVC) = 49868 HADR instance name of remote server (HADR_REMOTE_INST) = db2inst1 HADR timeout value (HADR_TIMEOUT) = 120  HADR target list (HADR_TARGET_LIST) = HADR log write synchronization mode (HADR_SYNCMODE) = SYNC  HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(53248) HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0  HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 300

备注:

  • HADR_PEER_WINDOW 配置参数应设置为一个足够大的值,确保在发生故障时,它不会在 Tivoli System Automation for Multiplatforms 将主要角色故障转移到备用节点之前过期。因此,推荐该值不小于 180 秒,您可以根据自己环境的需求来增加该值。
  • HADR_SYNCMODE 配置参数可设置为 SYNCNEARSYNCSYNC 模式可确保零数据丢失,而 NEARSYNC 模式在 SYNC 模式基础上提供了性能改进,但有丢失数据的风险。
  • db2pd 命令输出在 DB2 10.1 中已更改。如果使用较早的版本,那么格式可能会有所不同。

在设置数据库配置参数后,需要在备用实例上启动 HADR,然后使用 START HADR 命令在主要实例上启动它。

可以使用 db2pd -hadr -db <dbname> 命令监视主要或备用实例上的 HADR。

清单 3 显示了为 HADRDB1 数据库执行 db2pd -hadr -db <dbname> 命令的示例输出。

清单 3. 备用实例上的 db2pd –hadr –db hadrdb1 输出

HADR_ROLE = STANDBY REPLAY_TYPE = PHYSICAL HADR_SYNCMODE = SYNC STANDBY_ID = 0 LOG_STREAM_ID = 0 HADR_STATE = PEER PRIMARY_MEMBER_HOST = 198.72.81.88 PRIMARY_INSTANCE = db2inst1 PRIMARY_MEMBER = 0 STANDBY_MEMBER_HOST = 198.72.81.89 STANDBY_INSTANCE = db2inst1 STANDBY_MEMBER = 0 HADR_CONNECT_STATUS = CONNECTED HADR_CONNECT_STATUS_TIME = 02/06/2014 07:06:17.405506 (1391688377) HEARTBEAT_INTERVAL(seconds) = 30 HEARTBEAT_MISSED = 1 HEARTBEAT_EXPECTED = 14775 HADR_TIMEOUT(seconds) = 120 TIME_SINCE_LAST_RECV(seconds) = 19 PEER_WAIT_LIMIT(seconds) = 0 LOG_HADR_WAIT_CUR(seconds) = 0.000 LOG_HADR_WAIT_RECENT_AVG(seconds) = 0.000000 LOG_HADR_WAIT_ACCUMULATED(seconds) = 0.000 LOG_HADR_WAIT_COUNT = 0 SOCK_SEND_BUF_REQUESTED,ACTUAL(bytes) = 0, 16384 SOCK_RECV_BUF_REQUESTED,ACTUAL(bytes) = 0, 87380 PRIMARY_LOG_FILE,PAGE,POS = S0000006.LOG, 0, 65802990 STANDBY_LOG_FILE,PAGE,POS = S0000006.LOG, 0, 65802990 HADR_LOG_GAP(bytes) = 0 STANDBY_REPLAY_LOG_FILE,PAGE,POS = S0000006.LOG, 0, 65802990 STANDBY_RECV_REPLAY_GAP(bytes) = 0 PRIMARY_LOG_TIME = 02/05/2014 13:44:17.000000 (1391625857) STANDBY_LOG_TIME = 02/05/2014 13:44:17.000000 (1391625857) STANDBY_REPLAY_LOG_TIME = 02/05/2014 13:44:17.000000 (1391625857) STANDBY_RECV_BUF_SIZE(pages) = 4298 STANDBY_RECV_BUF_PERCENT = 0 STANDBY_SPOOL_LIMIT(pages) = 53248 STANDBY_SPOOL_PERCENT = 0 PEER_WINDOW(seconds) = 120 PEER_WINDOW_END = 02/011/2014 08:00:25.000000 (1392123625) READS_ON_STANDBY_ENABLED = N

需要确保在继续使用 db2haicu 工具配置高可用性之前,所有 HADR 数据库都处于 PEER 状态。可使用 db2pd -hadr -db <dbname> 输出中的 HADR_STATE 字段验证此情形。

准备集群

使用 db2haicu 工具之前,必须为主要和备用节点准备好合适的安全环境。

以根用户身份在主要和备用节点上发出 preprpnode 命令。在每个机器上,您提供的节点名称必须与 hostname 命令的输出相匹配。

清单 4. preprnode

preprpnode linuxnode01 linuxnode02

配置 ACR

在发生网络故障或机器故障时,DB2 客户端应用程序无法连接到主要数据库。借助客户端重新路由特性,客户端应用程序在无法连接到主要服务器时,可以尝试连接到备用服务器。

在高可用性配置中,客户端使用虚拟 IP 地址连接到数据库。在主要节点发生故障期间,Tivoli System Automation for Multiplatforms 向备用节点执行故障转移,使其成为主要节点。虚拟 IP 地址被分配给主要节点,客户端应用程序可使用相同的虚拟 IP 地址连接到新的主要节点。

只有在集群使用 Tivoli System Automation for Multiplatforms 进行配置后,虚拟 IP 才会激活。在运行 db2haicu 工具之前,请确保虚拟 IP 无法 ping 通。

重要事项:虚拟 IP 是一种每数据库资源,而不是实例资源。因此,在示例设置中,我们需要识别 3 种不同的虚拟 IP — 每个对应一个数据库。

要设置 ACR,可提供在主要服务器不可用时,客户可连接到的备用服务器的主机名和端口号。这里的端口号是由 SVCENAME dbm cfg 参数所设置的,实例 TCP/IP 监听器的端口。请确保 TCP/IP 监听器已为主要和备用实例启动。本示例对 TCP/IP 监听器使用了端口 49864。

在备用和主要节点上发出 UPDATE ALTERNATE SERVER 命令,以配置用于客户端重新路由的虚拟 IP 地址。

清单 5. UPDATE ALTERNATE SERVER

DB2 UPDATE ALTERNATE SERVER FOR DB HADRDB1 USING HOSTNAME 9.26.98.232 SERVER 49864

对 HADRDB2 和 HADRDB3 重复同样的步骤,使用它们各自的虚拟 IP 作为主机名。

如果虚拟 IP 地址不可用,那么可以为 ACR 配置客户端用来连接到数据库的地址。

回页首

使用 db2haicu 设置高可用性

本节将介绍如何使用 db2haicu 自动化 HADR 故障转移。前面已经提到过,db2haicu 应在交互式模式下使用,或者它可以接受一个 XML 文件作为输入。在两种情况下,db2haicu 都需要首先在备用实例上运行,然后在主要实例上运行。

在交互式模式下使用 db2haicu

要在交互式模式下使用 db2haicu 来为 3 个 HADR 数据库设置自动故障转移,请按以下说明进行操作。

创建一个集群域

第一步是创建集群域。db2haicu 工具将会收集相关信息,比如当前的 DB2 实例和实例中的数据库,还会激活该实例下的所有数据库。

  1. 从备用节点发出 db2haicu

    命令。将在屏幕上打印以下信息。因为系统中不存在域,所以 db2haicu 提示您创建一个集群域。

    清单 6. 备用节点上的 db2haicu 输出

    db2haicu Welcome to the DB2 High Availability Instance Configuration Utility (db2haicu).  You can find detailed diagnostic information in the DB2 server diagnostic log file called  db2diag.log. Also, you can use the utility called db2pd to query the status of the cluster  domains you create.  For more information about configuring your clustered environment using db2haicu, see the  topic called 'DB2 High Availability Instance Configuration Utility (db2haicu)' in the DB2  Information Center.  db2haicu determined the current DB2 database manager instance is db2inst1. The cluster  configuration that follows will apply to this instance.   db2haicu is collecting information on your current setup. This step may take some time as  db2haicu will need to activate all databases for the instance to discover all paths ... When you use db2haicu to configure your clustered environment, you create cluster domains.  For more information, see the topic 'Creating a cluster domain with db2haicu' in the DB2  Information Center. db2haicu is searching the current machine for an existing active cluster  domain ... db2haicu did not find a cluster domain on this machine. db2haicu will now query the system  for information about cluster nodes to create a new cluster domain ...  db2haicu did not find a cluster domain on this machine. To continue configuring your  clustered environment for high availability, you must create a cluster domain; otherwise,  db2haicu will exit.

    创建一个域并继续?[1]

    1. 是

    2. 否

    在随后的初始提示下键入 1 并按下 Enter

  2. 输入域的惟一名称和域的节点数量。本例为我们想要创建的域使用名称 HADR_TSA_DOMAIN。

    为新的域创建一个惟一名称:

    HADR_TSA_DOMAIN

    节点必须立刻添加到新域中。

  3. 我们的域中有两个节点:linuxnode01 是主要节点,linuxnode02 是备用节点。在随后的提示符下输入节点名称。

    HADR_TSA_DOMAIN 域将包含多少个集群节点?

    2

    输入机器的主机名,以便将它添加到域:linuxnode01

    输入机器的主机名,以便将它添加到域:linuxnode02

    db2haicu 现在可以创建包含您指定的两台机器的一个新域。如果您选择立刻创建一个域,那么 db2haicu 将退出。

    立刻创建域?[1]

    1. 是

    2. 否

    选择 1。

    Creating domain 'HADR_TSA_DOMAIN' in the cluster
    Creating domain 'HADR_TSA_DOMAIN' in the cluster was successful.

可以在输出中看到,该实用程序指示了该域是否成功创建。

法定地址配置

创建域之后,需要为集群域配置一个网络法定地址。 网络法定地址 是一个可从主要和备用节点 ping 的 IP 地址。在发生站点故障时,该配额决定了哪个节点被用作活动节点,哪个节点处于离线状态。在选择网络法定地址时,请确保该 IP 始终保持有效。DNS 服务器 IP 始终是网络法定地址的不错选择。

创建域后,db2haicu 会提示您输入法定设备的配置值

现在可为该域配置一个法定设备。有关更多信息,请参阅 DB2 信息中心中的 “法定设备”。如果没有为域配置法定设备,那么在集群中的部分机器失去连接时,需要一个人工操作员来手动干预。

为名为 HADR_TSA_DOMAIN 的域配置一个法定设备?[1]

1. 是

2. 否

选择 1。

选择一个法定设备。网络法定地址是惟一的选择,所以键入 1 并按下 Enter

以下是受支持的法定设备类型的列表:

1. 网络法定设备

输入对应于要使用的法定设备类型的数字: 1

在随后的提示符下,指定法定设备的网络地址:

指定 9.26.96.1

Configuring quorum device for domain 'HADR_TSA_DOMAIN'
Configuring quorum device for domain 'HADR_TSA_DOMAIN' was successful

输出显示了法定设备是否已成功配置。

网络设置

在定义法定设备后,需要定义该设置中使用的网络。本例使用了两个网络:一个公用网和一个私有网,客户端应用程序使用公用网通过虚拟 IP 地址来连接数据库;HADR 复制在私有网上执行。在这部分设置中,db2haicu 自动发现任何网络接口卡 (NIC) 并提示您为它们创建网络。

为这些网络接口卡创建网络?[1]

1. 是

2. 否

选择 1。

将每个节点上的每个网络定义为公共或私有。如下面的示例输出中所示,我们希望将两个节点的 eth0 接口都添加到公用网中,将 eth1 接口添加到私有网中。

输入群集节点 linuxnode01 上的网络接口卡 'eth0' 的网络名称

1. 为网络接口卡创建一个新的公用网。

2. 为网络接口卡创建一个新的私有网。

选择 1。

您确定想要将集群节点 linuxnode01 上的网络接口卡 eth0 添加到网络 db2_public_network_0?[1]

1. 是

2. 否

选择 1。

Adding network interface card 'eth0' on cluster node 'linuxnode01' to the network
'db2_public_network_0' ...
Adding network interface card 'eth0' on cluster node 'linuxnode01' to the network
'db2_public_network_0' was successful.

输入集群节点 linuxnode02 上的网络接口卡 'eth0' 的网络的名称。

1. db2_public_network_0

2. 为这个网络接口卡创建一个新的公用网。

3. 为这个网络接口卡创建一个新的私有网。

选择 1。

您确定想要将集群节点 'linuxnode02' 上的网络接口卡 'eth0' 添加到网络 db2_public_network_0?[1]

1. 是

2. 否

选择 1。

Adding network interface card 'eth0' on cluster node 'linuxnode02' to the network
'db2_public_network_0' ...
Adding network interface card 'eth0' on cluster node 'linuxnode02' to the network
'db2_public_network_0' was successful.

输入集群节点 'linuxnode02' 上的网络接口卡 'eth1' 的网络的名称

1. db2_public_network_0

2. 为这个网络接口卡创建 一个新的公用网。

3. 为这个网络接口卡创建 一个新的私有网。

选择 3。

您确定想将集群节点 'linuxnode02' 上的网络接口卡 'eth1' 添加到网络 'db2_private_network_0'?[1] [1]

1. 是

2. 否

选择 1。

Adding network interface card 'eth1' on cluster node 'linuxnode02' to the network
'db2_private_network_0' ...
Adding network interface card 'eth1' on cluster node 'linuxnode02' to the network
'db2_private_network_0' was successful.

输入集群节点 linuxnode01 上的网络接口卡 'eth1' 的网络名称

1. db2_private_network_0

2. db2_public_network_0

3. 为这个网络接口卡创建 一个新的公用网。

4. 为这个网络接口卡创建 一个新的私有网。

选择 1。

您确定想要添加集群上的网络接口卡 'eth1'

将节点 'linuxnode01' 添加到网络 'db2_private_network_0'?[1] [1]

1. 是

2. 否

选择 1。

将集群节点 'linuxnode01' 上的网络接口卡 'eth1' 添加到网络
'db2_private_network_0'...
Adding network interface card 'eth1' on cluster node 'linuxnode01' to the network
'db2_private_network_0' was successful.

设置集群管理器

此刻,db2haicu 提示您选择用于配置高可用性的集群管理器,可以选择 Tivoli System Automation for Multiplatforms 或指定一个不同的供应商。示例为此配置使用了 TSA(Tivoli System Automation for Multiplatforms 的一个旧有名称),db2haicu 添加运行备用 HADR 数据库的数据库分区实例。

清单 7. 设置集群管理器

The cluster manager name configuration parameter (high-availability configuration   parameter) is not set. For more information, see the topic "cluster_mgr - Cluster  manager name configuration parameter" in the DB2 Information Center. Do you want  to set the high-availability configuration  parameter?  以下是适用于高可用性配置参数的有效设置: 1. TSA 2. Vendor 为可可用性配置参数输入一个值:[1] 1 Setting a high-availability configuration  parameter for instance 'db2inst1' to 'TSA'. Adding DB2 database partition '0' to the cluster ... Adding DB2 database partition '0' to the cluster was successful.

自动化 HADR 故障转移

将 DB2 备用实例添加到集群域后,db2haicu 会提示您确认实例中每个数据库的 HADR 自动化情况。在本示例中,db2haicu 提示为数据库 HADRDB1、HADRDB2 和 HADRDB3 启用故障转移。

清单 8. 为数据库配置自动 HADR 故障转移

Do you want to validate and automate HADR failover for the HADR database 'HADRDB1'?  [1] 1. Yes 2.No 1 Adding HADR database HADRDB1 to the domain … The HADR database 'HADRDB1' has been determined to be valid for high availability. However,  the database cannot be added to the cluster from this node because db2haicu detected this  node is the standby for the HADR database 'HADRDB1'. Run db2haicu on the primary for  the HADR database 'HADRDB1' to configure the database for automated failover. Do you want to validate and automate HADR failover for the HADR database 'HADRDB2'?  [1] 1. Yes 2.No 1 Adding HADR database 'HADRDB2' to the domain … The HADR database 'HADRDB2' has been determined to be valid for high availability. However,  the database cannot be added to the cluster from this node because db2haicu detected this  node is the standby for the HADR database 'HADRDB2'. Run db2haicu on the primary for HADR database 'HADRDB2' to configure the database for automated failover. Do you want to validate and automate HADR failover for the HADR database 'HADRDB3'?  [1] 1. Yes 2.No 1 Adding HADR database 'HADRDB3' to the domain … The HADR database 'HADRDB3' has been determined to be valid for high availability. However,  the database cannot be added to the cluster from this node because db2haicu detected this  node is the standby for the HADR database 'HADRDB3'. Run db2haicu on the primary for  HADR database 'HADRDB3' to configure the database for automated failover. All cluster configurations have been completed successfully, db2haicu exiting …

主要实例和虚拟 IP 地址设置

配置备用实例后,需要从主要 DB2 实例运行 db2haicu。

清单 9. 主要实例上的 db2haicu 输出

$db2haicu Welcome to the DB2 High Availability Instance Configuration Utility (db2haicu).  You can find detailed diagnostic information in the DB2 server diagnostic log file  called db2diag.log. Also, you can use the utility called db2pd to query the status of the  cluster domains you create.  For more information about configuring your clustered environment using db2haicu,  see the topic called 'DB2 High Availability Instance Configuration Utility (db2haicu)'  in the DB2 Information Center.  db2haicu determined the current DB2 database manager instance is 'db2inst1'. The  cluster configuration that follows will apply to this instance.  db2haicu is collecting information on your current setup. This step may take some  time as db2haicu will need to activate all databases for the instance to discover all  paths ... When you use db2haicu to configure your clustered environment, you create cluster  domains. For more information, see the topic 'Creating a cluster domain with  db2haicu' in the DB2 Information Center. db2haicu is searching the current machine for an existing active cluster domain ... db2haicu found a cluster domain called HADR_TSA_DOMAIN on this machine.  The cluster configuration that follows will apply to this domain.

类似于备用实例上发生的情况,该工具提示您选择集群管理器。我们使用的是 TSA。该工具然后检测在该实例下创建的所有数据库,询问是否为数据库启用 HADR 故障转移。在这里,您对所有 3 个数据库(HADRDB1、HADRDB2 和 HADRDB3)启用 HADR 故障转移。将 HADR 数据库添加到集群后,db2haicu 会提示您为每个 HADR 数据库添加一个虚拟 IP 地址:

检索实例 ‘db2inst1’ 的高可用性配置参数

集群管理器名称配置参数(高可用性配置参数)未设置。有关的更多信息,请参阅 DB2 信息中心中的主题 “cluster_mgr — 集群管理器名称配置参数”。您想要设置高可用性配置参数吗?

以下是适用于高可用性配置参数的有效设置:

1. TSA

2. Vendor

为高可用性配置参数输入一个值:[1]

选择 1。

将实例 'db2inst1' 的一个高可用性配置参数设置为 'TSA'。

Adding DB2 database partition '0' to the cluster
Adding DB2 database partition '0' to the cluster was successful.

您是否想验证并自动化 HADR 数据库 'HADRDB1' 的 HADR 故障转移?[1]

1. 是

2. 否

选择 1。

Adding HADR database 'HADRDB1' to the domain
Adding HADR database 'HADRDB1' to the domain was successful.

您是否想为 HADR 数据库 'HADRDB1' 配置一个虚拟 IP 地址?[1]

1. 是

2. 否

选择 1。

输入虚拟 IP 地址:

9.26.98.232

输入虚拟 IP 地址 '9.26.98.232' 的子网掩码:[255.255.255.0]

255.255.252.0

选择虚拟 IP '9.26.98.232' 的地址:

1. db2_private_network_0

2. db2_public_network_0

选择 2。

Adding virtual IP address '9.26.98.232' to the domain
Adding virtual IP address '9.26.98.232' to the domain was successful.

您是否想验证和自动化 HADR 数据库 'HADRDB2' 的 HADR 故障转移?[1]

1. 是

2. 否

选择 1。

Adding HADR database 'HADRDB2' to the domain
Adding HADR database 'HADRDB2' to the domain was successful.

您是否想要为 HADR 数据库 'HADRDB2' 配置一个虚拟 IP 地址?[1]

1. 是

2. 否

选择 1。

输入虚拟 IP 地址:

9.26.98.181

输入虚拟 IP 地址 '9.26.98.181' 的子网掩码: [255.255.255.0]

255.255.252.0

选择虚拟 IP '9.26.98.181' 的网络:

1. db2_private_network_0

2. db2_public_network_0

选择 2。

Adding virtual IP address '9.26.98.181' to the domain
Adding virtual IP address '9.26.98.181' to the domain was successful.

您是否想要验证和自动化 HADR 数据库 'HADRDB3' 的 HADR 故障转移?[1]

1. 是

2. 否

选择 1。

Adding HADR database 'HADRDB3' to the domain
Adding HADR database 'HADRDB3' to the domain was successful.

您是否想要为 HADR 数据库 'HADRDB3' 配置一个虚拟 IP 地址?[1]

1. 是

2. 否

选择 1。

输入虚拟 IP 地址:

9.26.97.208

输入虚拟 IP 地址 '9.26.97.208' 的子网掩码:[255.255.255.0]

255.255.252.0

选择虚拟 IP '9.26.97.208' 的网络:

1. db2_private_network_0

2. db2_public_network_0

选择 2。

Adding virtual IP address '9.26.97.208' to the domain
Adding virtual IP address '9.26.97.208' to the domain was successful.
All cluster configurations have been completed successfully. db2haicu exiting

验证您的集群配置

在设置集群后,可以采用以下两种方法之一来验证集群设置:

  • 以根用户身份从任何主要或备用节点发出 lssam 命令。

    清单 10. 以根用户身份执行 lssam 的输出

    Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB1-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs |- Online IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB2-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs |- Online IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB3-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs |- Online IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_linuxnode02_0-rg Nominal=Online '- Online IBM.Application:db2_db2inst1_linuxnode02_0-rs '- Online IBM.Application:db2_db2inst1_linuxnode02_0-rs:linuxnode02 Online IBM.Equivalency:db2_private_network_0 |- Online IBM.NetworkInterface:eth1:linuxnode02 '- Online IBM.NetworkInterface:eth1:linuxnode01 Online IBM.Equivalency:db2_public_network_0 |- Online IBM.NetworkInterface:eth0:linuxnode01 '- Online IBM.NetworkInterface:eth0:linuxnode02 Online IBM.Equivalency:db2_db2inst1_db2inst1_HADRDB1-rg_group-equ |- Online IBM.PeerNode:linuxnode01:linuxnode01 '- Online IBM.PeerNode:linuxnode02:linuxnode02 Online IBM.Equivalency:db2_db2inst1_db2inst1_HADRDB2-rg_group-equ |- Online IBM.PeerNode:linuxnode01:linuxnode01 '- Online IBM.PeerNode:linuxnode02:linuxnode02 Online IBM.Equivalency:db2_db2inst1_db2inst1_HADRDB3-rg_group-equ |- Online IBM.PeerNode:linuxnode01:linuxnode01 '- Online IBM.PeerNode:linuxnode02:linuxnode02 Online IBM.Equivalency:db2_db2inst1_linuxnode02_0-rg_group-equ '- Online IBM.PeerNode:linuxnode02:linuxnode02

    lssam 输出显示了集群中的实例、数据库和网络的状态。可以在输出中看到为每个 HADR 数据库(HADRDB1、HADRDB2 和 HADRDB3)创建的资源组。为每个数据库创建的虚拟 IP 地址显示为资源组 Service IP 。对于所有 3 个数据据库,该服务 IP 在主要实例 linuxnode01 中保持 Online ,在备用实例中为 Offline 。在故障转移期间,Tivoli System Automation for Multiplatforms 将该 IP 地址分配给备用实例,它在备用实例中变成 Online,在主要实例中变成 Offline。

  • 从实例所有者 id 发出 db2pd –ha 命令,以获取资源的状态。

    清单 11. db2pd –ha 输出

    DB2 HA Status Instance Information: Instance Name = db2inst1 Number Of Domains = 1 Number Of RGs for instance = 3  Domain Information: Domain Name = HADR_TSA_DOMAIN Cluster Version = 3.1.2.2 Cluster State = Online Number of nodes = 2  Node Information: Node Name State --------------------- ------------------- linuxnode02 Online linuxnode01 Online  Resource Group Information: Resource Group Name = db2_db2inst1_db2inst1_HADRDB3-rg Resource Group LockState = Unlocked Resource Group OpState = Online Resource Group Nominal OpState = Online Number of Group Resources = 2 Number of Allowed Nodes = 2 Allowed Nodes ------------- linuxnode01 linuxnode02 Member Resource Information: Resource Name = db2ip_9_26_97_208-rs Resource State = Online Resource Type = IP Resource Name = db2_db2inst1_db2inst1_HADRDB3-rs Resource State = Online Resource Type = HADR HADR Primary Instance = db2inst1 HADR Secondary Instance = db2inst1 HADR DB Name = HADRDB3 HADR Primary Node = linuxnode01 HADR Secondary Node = linuxnode02  Resource Group Name = db2_db2inst1_db2inst1_HADRDB2-rg Resource Group LockState = Unlocked Resource Group OpState = Online Resource Group Nominal OpState = Online Number of Group Resources = 2 Number of Allowed Nodes = 2 Allowed Nodes ------------- linuxnode01 linuxnode02

    在成功完成集群配置后,所有资源状态都应为 Online ,锁状态应为 Unlocked

使用 db2haicu XML 模式设置集群

db2haicu 实用程序也可在 XML 模式下运行,其中该工具需要的所有输入都需要作为 XML 文件传递。清单 12 显示了我们的示例中使用的拓扑结构的 XML 文件。

清单 12. 示例 XML 文件

<DB2Cluster xsi:noNamespaceSchemaLocation="db2ha.xsd" clusterManagerName="TSA" version="1.0"> <ClusterDomain domainName="HADR_TSA_DOMAIN"> <Quorum quorumDeviceProtocol="network" quorumDeviceName="9.26.96.1"/> <PhysicalNetwork physicalNetworkName="db2_public_network_0" physicalNetworkProtocol="ip"> <Interface interfaceName="eth0" clusterNodeName="linuxnode01"> <IPAddress baseAddress="9.26.97.215" subnetMask="255.255.252.0" networkName="db2_public_network_0"/> </Interface> <Interface interfaceName="eth0" clusterNodeName="linuxnode02"> <IPAddress baseAddress="9.26.96.102" subnetMask="255.255.252.0" networkName="db2_public_network_0"/> </Interface> </PhysicalNetwork> <PhysicalNetwork physicalNetworkName="db2_private_network_0" physicalNetworkProtocol="ip"> <Interface interfaceName="eth1" clusterNodeName="linuxnode01"> <IPAddress baseAddress="198.72.81.88" subnetMask="255.255.255.0" networkName="db2_private_network_0"/> </Interface> <Interface interfaceName="eth1" clusterNodeName="linuxnode02"> <IPAddress baseAddress="198.72.81.89" subnetMask="255.255.255.0" networkName="db2_private_network_0"/> </Interface> </PhysicalNetwork> <ClusterNode clusterNodeName="linuxnode01"/> <ClusterNode clusterNodeName="linuxnode02"/> </ClusterDomain> <FailoverPolicy> <HADRFailover></HADRFailover> </FailoverPolicy> <DB2PartitionSet> <DB2Partition dbpartitionnum="0" instanceName="db2inst1"> </DB2Partition> </DB2PartitionSet> <HADRDBSet> <HADRDB databaseName="HADRDB1" localInstance="db2inst1" remoteInstance="db2inst1" localHost="linuxnode01" remoteHost="linuxnode02" /> <VirtualIPAddress baseAddress="9.26.98.232" subnetMask="255.255.252.0" networkName="db2_public_network_0"/> </HADRDBSet> <HADRDBSet> <HADRDB databaseName="HADRDB2" localInstance="db2inst1" remoteInstance="db2inst1" localHost="linuxnode01" remoteHost="linuxnode02" /> <VirtualIPAddress baseAddress="9.26.98.181" subnetMask="255.255.252.0" networkName="db2_public_network_0"/> </HADRDBSet> <HADRDBSet> <HADRDB databaseName="HADRDB3" localInstance="db2inst1" remoteInstance="db2inst1" localHost="linuxnode01" remoteHost="linuxnode02" /> <VirtualIPAddress baseAddress="9.26.97.208" subnetMask="255.255.252.0" networkName="db2_public_network_0"/> </HADRDBSet>

在该 XML 文件中:

  • <ClusterDomain> 元素包含集群级信息,比如法定地址、节点信息和域名。
  • <ClusterDomain> 元素的 <PhysicalNetwork> 子元素包含公用网、私有网和使用的 NIC 的所有网络相关信息。
  • <FailoverPolicy> 元素指定了要供集群管理器使用的故障转移策略。
  • <DB2PartitionSet> 元素包含实例名称和分区号等实例信息。
  • <HADRDBSet> 元素包含 HADR 数据库信息。它包含数据库名称、主要和备用实例名称、主要和备用节点名称,以及与数据库关联的虚拟 IP 地址。

要使用 db2haicu XML 模式配置自动故障转移,请执行以下操作:

  1. 登录到备用实例。
  2. 在备用实例上发出 db2haicu -f < XML file name > 命令。

    db2haicu 命令使用 XML 文件在备用端执行所有必要的配置。XML 文件或配置中发生错误时,db2haicu 将退出并提供一个非 0 错误代码。在备用实例上使用 db2haicu 的实例输出如下所示。

    清单 13. 在备用实例上使用 XML 文件的 db2haicu 的示例输出

    $ db2haicu -f db2ha_sample_HADR.xml Welcome to the DB2 High Availability Instance Configuration Utility (db2haicu).  You can find detailed diagnostic information in the DB2 server diagnostic log file called  db2diag.log. Also, you can use the utility called db2pd to query the status of the cluster  domains you create.  For more information about configuring your clustered environment using db2haicu, see the  topic called 'DB2 High Availability Instance Configuration Utility (db2haicu)' in the DB2  Information Center.  db2haicu determined the current DB2 database manager instance is 'db2inst1'. The cluster  configuration that follows will apply to this instance.  db2haicu is collecting information on your current setup. This step may take some time as  db2haicu will need to activate all databases for the instance to discover all paths … Creating domain 'HADR_TSA_DOMAIN' in the cluster … Creating domain 'HADR_TSA_DOMAIN' in the cluster was successful. Configuring quorum device for domain 'HADR_TSA_DOMAIN' ... Configuring quorum device for domain 'HADR_TSA_DOMAIN' was successful. Adding network interface card 'eth0' on cluster node 'linuxnode01' to the network  'db2_public_network_0' ... Adding network interface card 'eth0' on cluster node 'linuxnode01' to the network  'db2_public_network_0' was successful. Adding network interface card 'eth0' on cluster node 'linuxnode02' to the network  'db2_public_network_0' ... Adding network interface card 'eth0' on cluster node 'linuxnode02' to the network  'db2_public_network_0' was successful. Adding network interface card 'eth1' on cluster node 'linuxnode01' to the network  'db2_private_network_0' ... Adding network interface card 'eth1' on cluster node 'linuxnode01' to the network  'db2_private_network_0' was successful. Adding network interface card 'eth1' on cluster node 'linuxnode02' to the network  'db2_private_network_0' ... Adding network interface card 'eth1' on cluster node 'linuxnode02' to the network  'db2_private_network_0' was successful. Adding DB2 database partition '0' to the cluster ... Adding DB2 database partition '0' to the cluster was successful. HADR database 'HADRDB1' has been determined to be valid for high availability. However,  the database cannot be added to the cluster from this node because db2haicu detected this  node is the standby for HADR database 'HADRDB1'. Run db2haicu on the primary for  HADR database 'HADRDB1' to configure the database for automated failover. HADR database 'HADRDB2' has been determined to be valid for high availability. However,  the database cannot be added to the cluster from this node because db2haicu detected this  node is the standby for HADR database 'HADRDB2'. Run db2haicu on the primary for  HADR database 'HADRDB2' to configure the database for automated failover. HADR database 'HADRDB3' has been determined to be valid for high availability. However,  the database cannot be added to the cluster from this node because db2haicu detected this  node is the standby for HADR database 'HADRDB3'. Run db2haicu on the primary for  HADR database 'HADRDB3' to configure the database for automated failover. All cluster configurations have been completed successfully. db2haicu exiting
  3. 登录到主要实例。
  4. 在主要实例上发出 db2haicu -f <XML file name>

    命令。

    db2haicu 现在配置主要实例,在遇到错误时,退出并提供一个非 0 错误代码。在主要实例上使用 db2haicu 的实例输出如下所示。

    清单 14. 在主要实例上使用 XML 文件的 db2haicu 的示例输出

    $db2haicu -f db2ha_sample_HADR.xml Welcome to the DB2 High Availability Instance Configuration Utility (db2haicu).  You can find detailed diagnostic information in the DB2 server diagnostic log file called  db2diag.log. Also, you can use the utility called db2pd to query the status of the cluster  domains you create.  For more information about configuring your clustered environment using db2haicu, see the  topic called 'DB2 High Availability Instance Configuration Utility (db2haicu)' in the DB2  Information Center.  db2haicu determined the current DB2 database manager instance is 'db2inst1'. The cluster  configuration that follows will apply to this instance.  db2haicu is collecting information on your current setup. This step may take some time as  db2haicu will need to activate all databases for the instance to discover all paths ... Configuring quorum device for domain 'HADR_TSA_DOMAIN' ...  Configuring quorum device for domain 'HADR_TSA_DOMAIN' was successful. Network adapter 'eth0' on node 'linuxnode01' is already defined in network  'db2_public_network_0' and cannot be added to another network until it is removed from its current network. Network adapter 'eth0' on node 'linuxnode02' is already defined in network  'db2_public_network_0' and cannot be added to another network until it is removed from its  current network. Network adapter 'eth1' on node 'linuxnode01' is already defined in network  'db2_private_network_0' and cannot be added to another network until it is removed from its  current network. Network adapter 'eth1' on node 'linuxnode02' is already defined in network  'db2_private_network_0' and cannot be added to another network until it is removed from its  current network. Adding DB2 database partition '0' to the cluster ... Adding DB2 database partition '0' to the cluster was successful. Adding HADR database 'HADRDB1' to the domain ... Adding HADR database 'HADRDB1' to the domain was successful. Adding HADR database 'HADRDB2' to the domain ... Adding HADR database 'HADRDB2' to the domain was successful. Adding HADR database 'HADRDB3' to the domain ... Adding HADR database 'HADRDB3' to the domain was successful. All cluster configurations have been completed successfully. db2haicu exiting ...

与交互式模式一样,可以使用 lssam 命令或 db2pd 命令和 -ha 选项对集群状态执行配置后验证。

回页首

宕机期间的集群行为

本节讨论了主要或备用实例宕机期间的集群行为,以及使用温和的接管功能执行角色切换活动时的集群行为。这些示例仍采用图 1中所示的拓扑结构。

温和接管

从备用节点 linuxnode02 对任何数据库执行 温和接管 时,该备用节点会承担主要节点的角色。在成功完成 takeover 命令后,Tivoli System Automation for Multiplatforms 将此数据库的虚拟 IP 地址分配给新主要节点。

  1. 从备用节点 linuxnode02 发出 TAKEOVER HADR 命令,如清单 15 所示。

    清单 15. TAKEOVER HADR

    DB2 TAKEOVER HADR ON DB HADRDB1 DB20000I The TAKEOVER HADR ON DATABASE command completed successfully.
  2. 该命令成功完成后,从主要或备用节点发出 lssam 命令。清单 16 显示了接管后的输出。

    清单 16. 接管后的 lssam 输出

    Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB1-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs |- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode01 '- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs |- Offline IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode01 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB2-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs |- Online IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB3-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs |- Online IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode02

lssam 输出显示,Tivoli System Automation for Multiplatforms 已将数据库 HADRDB1 的资源组转移到新的主要节点:linuxnode02。

数据库 HADRDB1 的虚拟 IP 地址 9.26.98.232 现在在节点 linuxnode02 已在线。任何连接到旧主要节点 linuxnode01 上的数据库 HADRDB1 的客户端应用程序,现在将使用这个虚拟 IP 地址连接到新主要节点 linuxnode02。

其他数据库 HADRDB2 和 HADRDB3 的数据库资源继续位于节点 linuxnode01 上,因为仅对 HADRDB1 数据库发出了温和接管命令。

主要或备用实例中的计划外宕机

在主要或备用实例被以外终止时,Tivoli System Automation for Multiplatforms 会尝试重新启动该实例并将集群恢复正常状态。要模拟此场景,请执行以下操作:

  1. 在主要实例上发出 db2_kill 命令。
  2. 在结束后发出 lssam 命令。从输出结果中可以看出,所有 3 个数据库的 HADR 资源和主要实例上的 DB2 实例资源会的状态已从 Online 更改为 Pending Online

    清单 17. 在主要节点上发出 db2_kill 后的 lssam 输出。

    Online IBM.ResourceGroup:db2_db2inst1_linuxnode01_0-rg Nominal=Online '- Online IBM.Application:db2_db2inst1_linuxnode01_0-rs '- Online IBM.Application:db2_db2inst1_linuxnode01_0-rs:linuxnode01 Pending online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB1-rg Nominal=Online |- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs |- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs |- Online IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode02 Pending online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB2-rg Nominal=Online |- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs |- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs |- Online IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode02 Pending online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB3-rg Nominal=Online |- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs |- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs |- Online IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode02
  3. 定期发出 lssam 命令来监视重新启动的进度。集群管理器重新启动实例后, Pending online 状态将更改回 Onlinelssam 输出类似于下面这个示例。

    清单 18. 资源上线后的 lssam 输出

    Online IBM.ResourceGroup:db2_db2inst1_linuxnode01_0-rg Nominal=Online '- Online IBM.Application:db2_db2inst1_linuxnode01_0-rs '- Online IBM.Application:db2_db2inst1_linuxnode01_0-rs:linuxnode01 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB1-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs |- Online IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB2-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs |- Online IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB3-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode01 '- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs |- Online IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode01 '- Offline IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode02

在此场景中,与您在备用实例上发出 db2_kill 命令的行为类似。备用实例上的 HADR 和 DB2 实例资源的状态被更改为 Pending online ,在该实例重新启动后,它会返回到 Online 状态。

主要或备用机器的计划外宕机

在某些情况下,比如在系统崩溃时,同一个机器内重新启动故障实例的尝试会失败,而且 Tivoli System Automation for Multiplatforms 会将 HADR 资源故障转移到备用机器。

要模拟主要机器故障:

  1. 可拔出电源线。
  2. 在备用节点上发出 lssam

    命令。在下面的示例输出中,与主要节点有关联的所有资源组都处于 Failed Offline 状态。

    清单 19. 拔出电源线后备用节点上的 lssam 输出

    Failed offline IBM.ResourceGroup:db2_db2inst1_linuxnode01_0-rg Control=MemberInProblemState Nominal=Online '- Failed offline IBM.Application:db2_db2inst1_linuxnode01_0-rs Control=MemberInProblemState '- Failed offline IBM.Application:db2_db2inst1_linuxnode01_0-rs:linuxnode01 Node=Offline Pending online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB1-rg Control=MemberInProblemState Nominal=Online |- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs Control=MemberInProblemState |- Failed offline IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode01 Node=Offline '- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs Control=MemberInProblemState |- Failed offline IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode01 Node=Offline '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode02 Pending online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB2-rg Control=MemberInProblemState Nominal=Online |- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs Control=MemberInProblemState |- Failed offline IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode01 Node=Offline '- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs Control=MemberInProblemState |- Failed offline IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode01 Node=Offline '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode02 Pending online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB3-rg Control=MemberInProblemState Nominal=Online |- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs Control=MemberInProblemState |- Failed offline IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode01 Node=Offline '- Pending online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs Control=MemberInProblemState |- Failed offline IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode01 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode02

    在此场景中,客户端无法连接到数据库,集群管理器对 HADR 资源组发起故障转移。

    备用机器 linuxnode02 发出 ping 并获取网络法定地址后,Tivoli System Automation for Multiplatforms 将每个 HADR 数据库(HADRDB1、HADRDB2 和 HADRDB3)的虚拟 IP 地址分配给备用机器上的 eth0 NIC。然后,Tivoli System Automation for Multiplatforms 发起一次强制接管 ( TAKEOVER HADR ON DB HADRDB1 BY FORCE PEER WINDOW ONLY ),导致备用机器承担主要机器的角色。

  3. 恢复旧主要机器 linuxnode01 的电源。主要机器上线后,Tivoli System Automation for Multiplatforms 启动该实例,所有 3 个旧主要数据库将重新集成为备用数据库。
  4. 要通过监视来确认 HADR 复制的恢复情况,并确认主要和备用实例最终达到 PEER 状态,可以发出 lssam 命令。

    清单 20. 在主要节点上恢复电源后的 lssam 输出

    Online IBM.ResourceGroup:db2_db2inst1_linuxnode01_0-rg Nominal=Online '- Online IBM.Application:db2_db2inst1_linuxnode01_0-rs '- Online IBM.Application:db2_db2inst1_linuxnode01_0-rs:linuxnode01 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB1-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs |- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode01 '- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs |- Offline IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode01 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB2-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs |- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode01 '- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs |- Offline IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode01 '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB3-rg Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs |- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode01 '- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs |- Offline IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode01 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode02

如果某个备用机器宕机,所有数据库的 HADR 资源都将切换为 Failed Offline 状态,类似于上面的示例。备用机器重新启动后,备用实例会自动启动,备用数据库最终达到与主要数据库的 PEER 状态。

回页首

维护 Tivoli System Automation for Multiplatforms 集群

db2haicu 提供了一些命令来维护 System Automation for Multiplatforms 集群,比如禁用和启用高可用性。它还提供了完全删除 System Automation for Multiplatforms 集群的选项。

禁用和启用 Tivoli System Automation for Multiplatforms 故障转移

为集群配置了自动故障转移后,可以使用 db2haicu 命令和 -disable 选项临时禁用它。在禁用高可用性后,Tivoli System Automation for Multiplatforms 在主要节点中发生系统故障时不会执行任何自动故障转移。

清单 21 中的快照显示了执行的带 -disable 选项的 db2haicu 命令。

清单 21. db2haicu –disable 输出

db2haicu -disable Welcome to the DB2 High Availability Instance Configuration Utility (db2haicu).  You can find detailed diagnostic information in the DB2 server diagnostic log file called  db2diag.log. Also, you can use the utility called db2pd to query the status of the cluster domains you  create.  For more information about configuring your clustered environment using db2haicu, see the topic  called 'DB2 High Availability Instance Configuration Utility (db2haicu)' in the DB2 Information  Center.  db2haicu determined the current DB2 database manager instance is 'db2inst1'. The cluster  configuration that follows will apply to this instance.  Are you sure you want to disable high availability (HA) for the database instance 'db2inst1'. This will  lock all the resource groups for the instance and disable the HA configuration parameter. The  instance will not failover if a system outage occurs while the instance is disabled. You will need to  run db2haicu again to enable the instance for HA. Disable HA for the instance 'db2inst1'? [1] 1. Yes 2. No 1 Disabling high availability for instance 'db2inst1' ... Locking the resource group for HADR database 'HADRDB3' ... Locking the resource group for HADR database 'HADRDB3' was successful. Locking the resource group for HADR database 'HADRDB2' ... Locking the resource group for HADR database 'HADRDB2' was successful. Locking the resource group for HADR database 'HADRDB1' ... Locking the resource group for HADR database 'HADRDB1' was successful. Locking the resource group for DB2 database partition '0' ... Locking the resource group for DB2 database partition '0' was successful. Locking the resource group for DB2 database partition '0' ... Locking the resource group for DB2 database partition '0' was successful. Disabling high availability for instance 'db2inst1' was successful. All cluster configurations have been completed successfully. db2haicu exiting …

下面这个清单显示了为所有数据库禁用高可用性后的 lssam 输出。

清单 22. 禁用高可用性后的 lssam 输出

lssam Online IBM.ResourceGroup:db2_db2inst1_linuxnode01_0-rg Request=Lock Nominal=Online '- Online IBM.Application:db2_db2inst1_linuxnode01_0-rs Control=SuspendedPropagated '- Online IBM.Application:db2_db2inst1_linuxnode01_0-rs:linuxnode01 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB1-rg Request=Lock Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs Control=SuspendedPropagated |- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode01 '- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB1-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs Control=SuspendedPropagated |- Offline IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode01 '- Online IBM.ServiceIP:db2ip_9_26_98_232-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB2-rg Request=Lock Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs Control=SuspendedPropagated |- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode01 '- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB2-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs Control=SuspendedPropagated |- Offline IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode01 '- Online IBM.ServiceIP:db2ip_9_26_98_181-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_db2inst1_HADRDB3-rg Request=Lock Nominal=Online |- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs Control=SuspendedPropagated |- Offline IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode01 '- Online IBM.Application:db2_db2inst1_db2inst1_HADRDB3-rs:linuxnode02 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs Control=SuspendedPropagated |- Offline IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode01 '- Online IBM.ServiceIP:db2ip_9_26_97_208-rs:linuxnode02 Online IBM.ResourceGroup:db2_db2inst1_linuxnode02_0-rg Request=Lock Nominal=Online '- Online IBM.Application:db2_db2inst1_linuxnode02_0-rs Control=SuspendedPropagated '- Online IBM.Application:db2_db2inst1_linuxnode02_0-rs:linuxnode02 Continues…

禁用高可用性后,可运行不带任何选项的 db2haicu 来重新启用它。该实用程序检测高可用性是否已禁用,并提示用户是否启用高可用性。下面这个示例展示了如何在禁用高可用性后启用它。

清单 23. 启用高可用性的 db2haicu 输出

db2haicu Welcome to the DB2 High Availability Instance Configuration Utility (db2haicu).  You can find detailed diagnostic information in the DB2 server diagnostic log file called  db2diag.log. Also, you can use the utility called db2pd to query the status of the cluster domains you  create.  For more information about configuring your clustered environment using db2haicu, see the topic  called 'DB2 High Availability Instance Configuration Utility (db2haicu)' in the DB2 Information Center.  db2haicu determined the current DB2 database manager instance is 'db2inst1'. The cluster  configuration that follows will apply to this instance.  db2haicu is collecting information on your current setup. This step may take some time as db2haicu  will need to activate all databases for the instance to discover all paths ... When you use db2haicu to configure your clustered environment, you create cluster domains. For  more information, see the topic 'Creating a cluster domain with db2haicu' in the DB2 Information  Center. db2haicu is searching the current machine for an existing active cluster domain ... db2haicu found a cluster domain called 'HADR_TSA_DOMAIN' on this machine. The cluster  configuration that follows will apply to this domain.  db2haicu has detected that high availability has been disabled for the instance 'db2inst1'. Do you  want to enable high availability for the instance 'db2inst1'? [1] 1. Yes 2. No 1 Retrieving high-availability configuration parameter for instance 'db2inst1' ... The cluster manager name configuration parameter (high-availability configuration parameter) is not set. For more information, see the topic "cluster_mgr - Cluster manager name configuration parameter" in the DB2 Information Center. Do you want to set the high-availability configuration parameter? The following are valid settings for the high-availability configuration parameter: 1.TSA 2.Vendor Enter a value for the high-availability configuration  parameter: [1] 1 Setting a high-availability configuration  parameter for instance 'db2inst1' to 'TSA'. Enabling high availability for instance 'db2inst1' ... Enabling high availability for instance 'db2inst1' was successful. All cluster configurations have been completed successfully. db2haicu exiting ..

删除 Tivoli System Automation for Multiplatforms 域

要完全删除您创建的 Tivoli System Automation for Multiplatforms 域并删除 HADR 数据库的自动故障转移,可运行带 -delete 选项的 db2haicu 命令。

  1. 在备用节点上,发出带 -delete 选项的 db2haicu 命令。在该示例中,它从节点 linuxnode02 发出。

    清单 24. 备用节点上的 db2haicu –delete 输出

    db2haicu -delete Welcome to the DB2 High Availability Instance Configuration Utility (db2haicu).  You can find detailed diagnostic information in the DB2 server diagnostic log file called  db2diag.log. Also, you can use the utility called db2pd to query the status of the cluster  domains you create.  For more information about configuring your clustered environment using db2haicu, see the  topic called 'DB2 High Availability Instance Configuration Utility (db2haicu)' in the DB2  Information Center.  db2haicu determined the current DB2 database manager instance is 'db2inst1'. The cluster  configuration that follows will apply to this instance.  When you use db2haicu to configure your clustered environment, you create cluster domains.  For more information, see the topic 'Creating a cluster domain with db2haicu' in the DB2  Information Center. db2haicu is searching the current machine for an existing active cluster  domain ... db2haicu found a cluster domain called 'HADR_TSA_DOMAIN' on this machine. The  cluster configuration that follows will apply to this domain.  Removing HADR database 'HADRDB3' from the domain ... Removing HADR database 'HADRDB3' from the domain was successful. Removing HADR database 'HADRDB2' from the domain ... Removing HADR database 'HADRDB2' from the domain was successful. Removing HADR database 'HADRDB1' from the domain ... Removing HADR database 'HADRDB1' from the domain was successful. Removing DB2 database partition '0' from the cluster ... Removing DB2 database partition '0' from the cluster was successful. All cluster configurations have been completed successfully. db2haicu exiting …
  2. 在主要节点上,发出带 -delete 选项的 db2haicu 命令。在该示例中,它从节点 linuxnode01 发出。

    清单 25. 主要节点上的 db2haicu –delete 输出

    db2haicu -delete Welcome to the DB2 High Availability Instance Configuration Utility (db2haicu).  You can find detailed diagnostic information in the DB2 server diagnostic log file called  db2diag.log. Also, you can use the utility called db2pd to query the status of the cluster  domains you create.  For more information about configuring your clustered environment using db2haicu, see the  topic called 'DB2 High Availability Instance Configuration Utility (db2haicu)' in the DB2  Information Center.  db2haicu determined the current DB2 database manager instance is 'db2inst1'. The cluster  configuration that follows will apply to this instance.  When you use db2haicu to configure your clustered environment, you create cluster domains.  For more information, see the topic 'Creating a cluster domain with db2haicu' in the DB2  Information Center. db2haicu is searching the current machine for an existing active  cluster domain ... db2haicu found a cluster domain called 'HADR_TSA_DOMAIN' on this machine. The  cluster configuration that follows will apply to this domain.  Removing DB2 database partition '0' from the cluster ... Removing DB2 database partition '0' from the cluster was successful. Deleting the domain 'HADR_TSA_DOMAIN' from the cluster ... Deleting the domain 'HADR_TSA_DOMAIN' from the cluster was successful. All cluster configurations have been completed successfully. db2haicu exiting ...

回页首

结束语

在本文中,您学习了如何使用 Tivoli System Automation for Multiplatforms,为一个 DB2 实例中的多个 HADR 数据库设置自动故障转移。我们讨论了使用 db2haicu 设置高可用性的两种方法:使用 XML 文件和交互式模式。我们还探讨了不同宕机场景下的集群行为。

回页首

致谢

感谢 IBM Software Group 的 Information Management 部门的 Phil Stedman 为本文的贡献。

还要感谢 Rob Causley 对本文所做的编辑工作。

正文到此结束
Loading...