IBM Cloud Docs
在 Red Hat Enterprise Linux High Availability Add-On 集群中配置 SAP HANA 多层系统复制

在 Red Hat Enterprise Linux High Availability Add-On 集群中配置 SAP HANA 多层系统复制

以下信息介绍了 Red Hat Enterprise Linux (RHEL) High Availability Add-On 集群的配置,用于在多层复制场景中管理 SAP HANA 系统复制。 群集使用 IBM® Power® Virtual Server 中的虚拟服务器实例作为群集节点。

您可以在 SAP HANA 多层系统复制拓扑中连接多个系统,以实现更高水平的可用性。 三级 SAP HANA 实例在另一个工作区 IBM Power Virtual Server 中的第三个虚拟服务器实例上运行。 Red Hat Enterprise Linux 8 (RHEL) HA 附加组件中 SAP HANA 的资源代理要求手动管理三级 SAP HANA 实例。 三级 SAP HANA 系统安装在群集外的虚拟服务器实例上。 群集接管后,必须手动重新注册三级 SAP HANA 实例。

多层系统复制方案中,第三层 SAP HANA 系统在第三个虚拟服务器实例上运行。 第三个虚拟服务器实例部署在另一个地理位置或区域的另一个 IBM Power Virtual Server 工作区中。 SAP HANA 系统复制操作模式必须与所有多层复制级别相同。 唯一的例外是一级和二级之间的 logreplay_readaccess,以及二级和三级之间的 logreplay

必须手动触发对灾难恢复(DR) 站点上三级系统的接管。

本信息面向计划在 Power Virtual Server 上高可用性部署 SAP HANA 的架构师和专家。

准备工作

查看 IBM Power Virtual Server 参考资料中为 SAP 应用程序实施高可用性 中列出的一般要求、产品文档、支持文章和 SAP 注释。

先决条件

设置多层方案

多层方案是 Red Hat Enterprise Linux High Availability Add-On 集群中配置 SAP HANA 扩展系统复制 中所述设置的扩展。 完成系统复制群集的设置后,再继续以下步骤。

如果 AUTOMATED_REGISTER 群集属性设置为 true,则重新整合群集中的故障节点可能会导致设置错误的 SAP HANA 系统复制模式或不希望的 SAP HANA 系统复制拓扑。 为避免这些问题,请禁用自动注册,并在故障节点上启动群集之前使用 hdbnsutil 命令手动注册 SAP HANA 系统。

在群集节点上,运行以下命令禁用自动注册。

pcs resource update SAPHana_${SID}_${INSTNO} AUTOMATED_REGISTER=false

提供工作区之间的网络连接

  1. 使用 创建工作区中 的信息,在不同的地理位置或区域创建另一个工作区。

  2. 创建子网,并确保 IP 范围不与承载群集虚拟服务器实例的工作区的任何子网重叠。 更多信息,请参阅 创建专用网络子网

  3. 在两个工作区都设置 IBM Cloud® 连接,并激活启用 IBM Transit Gateway。 更多信息,请参阅 创建 Power Virtual Server 云连接

  4. 部署 IBM Cloud Transit Gateway,将两个 IBM Power Virtual Server 工作空间互连起来。

    IBM Cloud Transit Gateway 实现 IBM Power Virtual Server、IBM Cloud classic 和虚拟专用云 (VPC) 基础设施的互联,并将数据保存在 IBM Cloud 网络内。 有关规划和部署 IBM Cloud Transit Gateway 的更多信息,请参阅 规划 IBM Cloud Transit Gateway 和 订购 IBM Cloud Transit Gateway。

  5. 要将连接添加到中转网关,以便在 IBM Power Virtual Server 之间建立网络连接,请打开 Transit Gateway 页面。

  6. 选择中转网关的名称。

  7. 单击添加连接

  8. 选择 Power Systems Virtual Serverk 作为网络连接,并选择工作区的位置

  9. 单击添加创建连接。

准备环境变量 NODE3

为简化设置,请为 NODE3 上的用户 ID root 准备以下环境变量。 这些环境变量将在后续指令中使用。

在 NODE3 上,创建一个包含以下环境变量的文件。 然后,根据 SAP HANA 系统的配置进行调整。

export SID=<SID>            # SAP HANA System ID (uppercase)
export sid=<sid>            # SAP HANA System ID (lowercase)
export INSTNO=<INSTNO>      # SAP HANA Instance Number

export DC3=<Site3>          # HANA System Replication Site Name 3

export NODE1=<Hostname 1>   # Hostname of virtual server instance 1 (production primary)
export NODE2=<Hostname 2>   # Hostname of virtual server instance 2 (production secondary)
export NODE3=<Hostname 3>   # Hostname of virtual server instance 3 (production tertiary)

在使用本文档其余部分的示例命令之前,您必须先获取该文件的源代码。

例如,如果您创建了一个名为 sap_tier3.sh 的文件,请在 NODE3 上运行以下命令来设置环境变量。

source sap_tier3.sh

每次启动新的终端会话时,都必须运行之前的 source 命令。 作为替代方法,您可以在群集配置过程中将环境变量文件添加到 /etc/profile.d 目录中。 在此示例中,每次登录服务器时,文件都会自动生成。

验证虚拟服务器实例之间的网络连接

验证两个群集节点 ( NODE1 和 NODE2 ) 与 NODE3 之间的网络连接。

  1. 同时登录 NODE1 和 NODE2,以及 ping NODE3。

    ping -c 3 ${NODE3}
    

    样本输出:

    # ping -c 3 cl-hdb-3
    PING cl-hdb-3 (10.40.20.70) 56(84) bytes of data.
    64 bytes from 10.40.20.70 (10.40.20.70): icmp_seq=1 ttl=46 time=78.2 ms
    64 bytes from 10.40.20.70 (10.40.20.70): icmp_seq=2 ttl=46 time=78.3 ms
    64 bytes from 10.40.20.70 (10.40.20.70): icmp_seq=3 ttl=46 time=78.2 ms
    
    --- cl-hdb-3 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2003ms
    rtt min/avg/max/mdev = 78.197/78.233/78.264/0.027 ms
    
  2. 登录 NODE3 和 ping NODE1。

    ping -c 3 ${NODE1}
    

    样本输出:

    # ping -c 3 cl-hdb-1
    PING cl-hdb-1 (10.40.10.60) 56(84) bytes of data.
    64 bytes from cl-hdb-1 (10.40.10.60): icmp_seq=1 ttl=46 time=78.3 ms
    64 bytes from cl-hdb-1 (10.40.10.60): icmp_seq=2 ttl=46 time=78.2 ms
    64 bytes from cl-hdb-1 (10.40.10.60): icmp_seq=3 ttl=46 time=78.3 ms
    
    --- cl-hdb-1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2002ms
    rtt min/avg/max/mdev = 78.245/78.268/78.287/0.229 ms
    
  3. 登录 NODE3 和 ping NODE2。

    ping -c 3 ${NODE2}
    

    样本输出:

    # ping -c 3 cl-hdb-2
    PING cl-hdb-2 (10.40.10.194) 56(84) bytes of data.
    64 bytes from cl-hdb-2 (10.40.10.194): icmp_seq=1 ttl=46 time=77.6 ms
    64 bytes from cl-hdb-2 (10.40.10.194): icmp_seq=2 ttl=46 time=79.1 ms
    64 bytes from cl-hdb-2 (10.40.10.194): icmp_seq=3 ttl=46 time=77.7 ms
    
    --- cl-hdb-2 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2003ms
    rtt min/avg/max/mdev = 77.649/78.129/79.071/0.703 ms
    

将 PKI SSFS 存储证书文件复制到 NODE3

SAP HANA 2.0 复制过程的数据和日志传输通道需要使用系统 PKI SSFS 存储证书文件进行身份验证。

系统 PKI SSFS 存储证书文件存放在 /usr/sap/${SID}/SYS/global/security/rsecssfs/ 子目录 datakey 中。

在 NODE3 上,运行以下命令从 NODE2 复制文件 SSFS_${SID}.DATSSFS_${SID}.KEY

scp ${NODE2}:/usr/sap/${SID}/SYS/global/security/rsecssfs/data/SSFS_${SID}.DAT /usr/sap/${SID}/SYS/global/security/rsecssfs/data/SSFS_${SID}.DAT
scp ${NODE2}:/usr/sap/${SID}/SYS/global/security/rsecssfs/key/SSFS_${SID}.KEY /usr/sap/${SID}/SYS/global/security/rsecssfs/key/SSFS_${SID}.KEY

在 NODE3 上复制的 PKI SSFS 存储证书在启动 SAP HANA 系统时处于激活状态。 因此,建议在 NODE3 上的 SAP HANA 系统停止运行时复制文件。

将 NODE3 注册为三级 SAP HANA 系统复制系统

将 SAP HANA 系统注册为三级系统复制实例。

  1. 在 NODE2 上,运行以下命令将该站点启用为系统复制源系统。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_enable
    

    样本输出:

    $ hdbnsutil -sr_enable
    nameserver is active, proceeding ...
    successfully enabled system as system replication source site
    done.
    
  2. 在 NODE3 上,停止 SAP HANA 系统。

    sudo -i -u ${sid}adm -- HDB stop
    
  3. 在 NODE3 上,用 NODE2 注册三级系统。

    sudo -i -u ${sid}adm -- \
        hdbnsutil -sr_register \
          --name=${DC3} \
          --remoteHost=${NODE2} \
          --remoteInstance=${INSTNO} \
          --replicationMode=async \
          --operationMode=logreplay \
          --online
    
  4. 在 NODE3 上,启动三级 SAP HANA 系统。

    sudo -i -u ${sid}adm -- HDB start
    

检查 SAP HANA 系统复制状态

您可以使用以下工具监控系统复制状态。

  • SAP HANA 驾驶舱
  • SAP HANA 工作室
  • hdbnsutil 命令行工具
  • systemReplicationStatus.py Python 脚本
  • SQL 查询

systemReplicationStatus.py 脚本的全部输出只能在主系统上获取,因为需要连接数据库才能获取部分状态信息。

在 NODE1 上,使用 systemReplicationStatus.py Python 脚本检查系统复制状态。

sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py

样本输出:

# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
|         |         |      |             |          |        |          |Host     |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-1 |30001 |nameserver   |        1 |      1 |SiteA     |cl-hdb-2 |    30001 |        2 |SiteB     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30007 |xsengine     |        2 |      1 |SiteA     |cl-hdb-2 |    30007 |        2 |SiteB     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30003 |indexserver  |        3 |      1 |SiteA     |cl-hdb-2 |    30003 |        2 |SiteB     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-3 |    30001 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-3 |    30007 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-3 |    30003 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |

status system replication site "2": ACTIVE
status system replication site "3": ACTIVE
overall system replication status: ACTIVE

Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mode: PRIMARY
site id: 1
site name: SiteA

使用 hdbnsutil 命令可查看系统复制状态。

在所有节点上运行以下命令检查系统复制状态。

sudo -i -u ${sid}adm -- hdbnsutil -sr_state

输出示例 NODE1:

# sudo -i -u hdbadm -- hdbnsutil -sr_state

System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~

online: true

mode: primary
operation mode: primary
site id: 1
site name: SiteA

is source system: true
is secondary/consumer system: false
has secondaries/consumers attached: true
is a takeover active: false
is primary suspended: false

Host Mappings:
~~~~~~~~~~~~~~

cl-hdb-1 -> [SiteC] cl-hdb-3
cl-hdb-1 -> [SiteB] cl-hdb-2
cl-hdb-1 -> [SiteA] cl-hdb-1


Site Mappings:
~~~~~~~~~~~~~~
SiteA (primary/primary)
    |---SiteB (syncmem/logreplay)
    |    |---SiteC (async/logreplay)

Tier of SiteA: 1
Tier of SiteB: 2
Tier of SiteC: 3

Replication mode of SiteA: primary
Replication mode of SiteB: syncmem
Replication mode of SiteC: async

Operation mode of SiteA: primary
Operation mode of SiteB: logreplay
Operation mode of SiteC: logreplay

Mapping: SiteA -> SiteB
Mapping: SiteB -> SiteC

Hint based routing site:
done.

输出示例 NODE2:

# sudo -i -u hdbadm -- hdbnsutil -sr_state

System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~

online: true

mode: syncmem
operation mode: logreplay
site id: 2
site name: SiteB

is source system: true
is secondary/consumer system: true
has secondaries/consumers attached: true
is a takeover active: false
is primary suspended: false
is timetravel enabled: false
replay mode: auto
active primary site: 1

primary masters: cl-hdb-1

Host Mappings:
~~~~~~~~~~~~~~

cl-hdb-2 -> [SiteC] cl-hdb-3
cl-hdb-2 -> [SiteB] cl-hdb-2
cl-hdb-2 -> [SiteA] cl-hdb-1


Site Mappings:
~~~~~~~~~~~~~~
SiteA (primary/primary)
    |---SiteB (syncmem/logreplay)
    |    |---SiteC (async/logreplay)

Tier of SiteA: 1
Tier of SiteB: 2
Tier of SiteC: 3

Replication mode of SiteA: primary
Replication mode of SiteB: syncmem
Replication mode of SiteC: async

Operation mode of SiteA: primary
Operation mode of SiteB: logreplay
Operation mode of SiteC: logreplay

Mapping: SiteA -> SiteB
Mapping: SiteB -> SiteC

Hint based routing site:
done.

输出示例 NODE3:

# sudo -i -u hdbadm -- hdbnsutil -sr_state

System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~

online: true

mode: async
operation mode: logreplay
site id: 3
site name: SiteC

is source system: false
is secondary/consumer system: true
has secondaries/consumers attached: false
is a takeover active: false
is primary suspended: false
is timetravel enabled: false
replay mode: auto
active primary site: 2

primary masters: cl-hdb-2

Host Mappings:
~~~~~~~~~~~~~~

cl-hdb-3 -> [SiteC] cl-hdb-3
cl-hdb-3 -> [SiteB] cl-hdb-2
cl-hdb-3 -> [SiteA] cl-hdb-1


Site Mappings:
~~~~~~~~~~~~~~
SiteA (primary/primary)
    |---SiteB (syncmem/logreplay)
    |    |---SiteC (async/logreplay)

Tier of SiteA: 1
Tier of SiteB: 2
Tier of SiteC: 3

Replication mode of SiteA: primary
Replication mode of SiteB: syncmem
Replication mode of SiteC: async

Operation mode of SiteA: primary
Operation mode of SiteB: logreplay
Operation mode of SiteC: logreplay

Mapping: SiteA -> SiteB
Mapping: SiteB -> SiteC

Hint based routing site:
done.

测试 SAP HANA 系统复制群集

彻底测试群集配置以确保群集正常运行至关重要。 以下信息提供了一些故障切换测试场景示例,但并非完整的测试场景列表。

例如,每个测试用例的说明包括以下信息。

  • 接受测试的组件
  • 测试说明
  • 前提条件和故障切换测试前的初始状态
  • 测试程序
  • 预期行为和结果
  • 恢复程序

Test1- 测试主数据库实例故障

使用以下信息测试主数据库实例的故障。

Test1- 说明

模拟在 NODE1 上运行的 SAP HANA 主数据库实例崩溃。

Test1- 先决条件

  • 用于 HANA 系统复制的功能性双节点 RHEL HA 附加集群。
  • 两个群集节点都处于活动状态。
  • 群集在 NODE1 和 NODE2 上启动。
  • 集群资源 SAPHana_${SID}_${INSTNO} 通过 AUTOMATED_REGISTER=false 进行配置。
  • 检查 SAP HANA 系统复制状态:
    • SAP HANA 多层系统复制已激活并保持同步。
    • SAP HANA 主系统运行在 NODE1 上。
    • 二级 SAP HANA 系统在 NODE2 上运行。
    • 三级 SAP HANA 系统在 NODE3 上运行,并在 NODE2 上注册。

在 NODE1 上检查当前系统复制状态。

sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py

样本输出:

# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
|         |         |      |             |          |        |          |Host     |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-1 |30001 |nameserver   |        1 |      1 |SiteA     |cl-hdb-2 |    30001 |        2 |SiteB     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30007 |xsengine     |        2 |      1 |SiteA     |cl-hdb-2 |    30007 |        2 |SiteB     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30003 |indexserver  |        3 |      1 |SiteA     |cl-hdb-2 |    30003 |        2 |SiteB     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-3 |    30001 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-3 |    30007 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-3 |    30003 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |

status system replication site "2": ACTIVE
status system replication site "3": ACTIVE
overall system replication status: ACTIVE

Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mode: PRIMARY
site id: 1
site name: SiteA

Test1- 测试程序

以用户 ${sid}adm 的身份发送 SIGKILL 信号,使 SAP HANA 初级程序崩溃。

在 NODE1 上,运行以下命令。

sudo -i -u ${sid}adm -- HDB kill-9

Test1- 预期行为

  • SAP HANA NODE1 上的主实例崩溃。
  • 群集会检测到已停止的主控资源,并将其标记为 undefined
  • 群集将 NODE2 上的辅助 SAP HANA 系统升级为主系统。
  • 群集在 NODE1 上释放虚拟 IP 地址,并在 NODE2 上获取主 IP 地址。
  • 如果应用程序(如 SAP NetWeaver )连接到 SAP HANA 的租户数据库,则应用程序会自动重新连接到新的主数据库。

在 NODE1 上,运行以下命令检查群集状态。

pcs status --full

样本输出:

pcs status --full

Cluster name: HDB_cluster
Cluster Summary:
  * Stack: corosync
  * Current DC: cl-hdb-1 (1) (version 2.0.5-9.el8_4.5-ba59be7122) - partition with quorum
  * Last updated: Mon Jul 10 16:00:38 2023
  * Last change:  Mon Jul 10 15:58:50 2023 by root via crm_attribute on cl-hdb-2
  * 2 nodes configured
  * 6 resource instances configured

Node List:
  * Online: [ cl-hdb-1 (1) cl-hdb-2 (2) ]

Full List of Resources:
  * res_fence_ibm_powervs       (stonith:fence_ibm_powervs):     Started cl-hdb-1
  * vip_HDB_00_primary  (ocf::heartbeat:IPaddr2):        Started cl-hdb-2
  * Clone Set: SAPHanaTopology_HDB_00-clone [SAPHanaTopology_HDB_00]:
    * SAPHanaTopology_HDB_00    (ocf::heartbeat:SAPHanaTopology):        Started cl-hdb-1
    * SAPHanaTopology_HDB_00    (ocf::heartbeat:SAPHanaTopology):        Started cl-hdb-2
  * Clone Set: SAPHana_HDB_00-clone [SAPHana_HDB_00] (promotable):
    * SAPHana_HDB_00    (ocf::heartbeat:SAPHana):        Master cl-hdb-2
    * SAPHana_HDB_00    (ocf::heartbeat:SAPHana):        Stopped

Node Attributes:
  * Node: cl-hdb-1 (1):
    * hana_hdb_clone_state              : UNDEFINED
    * hana_hdb_op_mode                  : logreplay
    * hana_hdb_remoteHost               : cl-hdb-2
    * hana_hdb_roles                    : 1:P:master1::worker:
    * hana_hdb_site                     : SiteA
    * hana_hdb_srah                     : -
    * hana_hdb_srmode                   : sync
    * hana_hdb_sync_state               : SFAIL
    * hana_hdb_version                  : 2.00.070.00.1679989823
    * hana_hdb_vhost                    : cl-hdb-1
    * lpa_hdb_lpt                       : 10
    * master-SAPHana_HDB_00             : -9000
  * Node: cl-hdb-2 (2):
    * hana_hdb_clone_state              : PROMOTED
    * hana_hdb_op_mode                  : logreplay
    * hana_hdb_remoteHost               : cl-hdb-1
    * hana_hdb_roles                    : 4:P:master1:master:worker:master
    * hana_hdb_site                     : SiteB
    * hana_hdb_sra                      : -
    * hana_hdb_srah                     : -
    * hana_hdb_srmode                   : sync
    * hana_hdb_sync_state               : PRIM
    * hana_hdb_version                  : 2.00.070.00.1679989823
    * hana_hdb_vhost                    : cl-hdb-2
    * lpa_hdb_lpt                       : 1688997529
    * master-SAPHana_HDB_00             : 150

Migration Summary:
  * Node: cl-hdb-1 (1):
    * SAPHana_HDB_00: migration-threshold=5000 fail-count=1000000 last-failure='Mon Jul 10 15:56:06 2023'

Failed Resource Actions:
  * SAPHana_HDB_00_start_0 on cl-hdb-1 'not running' (7): call=51, status='complete', exitreason='', last-rc-change='2023-07-10 15:56:04 +02:00', queued=0ms, exec=1527ms

Tickets:

PCSD Status:
  cl-hdb-1: Online
  cl-hdb-2: Online

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

在 NODE2 上,运行以下命令检查系统复制状态。

sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py

样本输出:

# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
|         |         |      |             |          |        |          |Host     |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-3 |    30001 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-3 |    30007 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-3 |    30003 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |

status system replication site "3": ACTIVE
overall system replication status: ACTIVE

Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mode: PRIMARY
site id: 2
site name: SiteB

Test1- 恢复程序

由于群集资源 SAPHana_${SID}_${INSTNO} 是通过 AUTOMATED_REGISTER=false 配置的,因此需要将 NODE1 上的 SAP HANA 系统与 NODE2 上的主系统进行手动注册。

将 NODE1 上的 SAP HANA 注册为辅助系统后,SAP HANA 系统复制拓扑结构就会发生变化。 然后, SiteC NODE3 上的 SAP HANA 系统和 SiteA 上的 NODE1 系统都被注册为运行在 SiteB NODE2 上的主 SAP HANA 数据库的辅助系统。

如果想继续使用多层拓扑结构,则需要先在 SiteC 取消 NODE3 上 SAP HANA 系统的注册。 然后,在 NODE1 上注册 SAP HANA 系统,网址是 SiteA,在 NODE2 上注册主系统,网址是 SiteB。 最后,在 NODE3 上注册 SAP HANA 系统,网址是 SiteC,在 NODE1 上注册二级系统,网址是 SiteA

在 NODE1 上,运行以下命令向 NODE2 上的主系统注册系统。

sudo -i -u ${sid}adm -- \
    hdbnsutil -sr_register \
      --name=${DC1} \
      --remoteHost=${NODE2} \
      --remoteInstance=${INSTNO} \
      --replicationMode=syncmem \
      --operationMode=logreplay \
      --online

在 NODE1 上,运行以下命令验证资源状态。

pcs resource status

集群资源 SAPHana_${SID}_${INSTNO}-clone 在 NODE1 上的状态仍为 Stopped

样本输出:

# pcs resource status
  * vip_HDB_00_primary  (ocf::heartbeat:IPaddr2):        Started cl-hdb-2
  * Clone Set: SAPHanaTopology_HDB_00-clone [SAPHanaTopology_HDB_00]:
    * Started: [ cl-hdb-1 cl-hdb-2 ]
  * Clone Set: SAPHana_HDB_00-clone [SAPHana_HDB_00] (promotable):
    * Masters: [ cl-hdb-2 ]
    * Stopped: [ cl-hdb-1 ]

在群集节点上,运行以下命令清除资源的故障状态。

pcs resource cleanup SAPHana_${SID}_${INSTNO}-clone

样本输出:

# pcs resource cleanup SAPHana_HDB_00-clone
Cleaned up SAPHana_HDB_00:0 on cl-hdb-2
Cleaned up SAPHana_HDB_00:0 on cl-hdb-1
Cleaned up SAPHana_HDB_00:1 on cl-hdb-2
Cleaned up SAPHana_HDB_00:1 on cl-hdb-1
Waiting for 1 reply from the controller
... got reply (done)

一段时间后,在 NODE2 上验证系统复制状态。

sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py

样本输出:

# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
|         |         |      |             |          |        |          |Host     |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-3 |    30001 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-3 |    30007 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-3 |    30003 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-1 |    30001 |        1 |SiteA     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-1 |    30007 |        1 |SiteA     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-1 |    30003 |        1 |SiteA     |YES           |SYNCMEM     |ACTIVE      |               |        True |

status system replication site "3": ACTIVE
status system replication site "1": ACTIVE
overall system replication status: ACTIVE

Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mode: PRIMARY
site id: 2
site name: SiteB

改为多目标环境的 SAP HANA 系统复制拓扑。 初级运行 NODE2,SiteB。 NODE3 at SiteC 和 NODE1 at SiteA 都注册为二级。 如果再次发生接管,且 SiteA 上的 NODE1 再次升为主控,则 SiteC 上的 NODE3 将被解耦。

使用 NODE3 创建多层环境 SiteC 作为第三系统,重复类似于 将 NODE3 注册为第三 SAP HANA 系统复制系统的 步骤,并将 NODE3 注册到 NODE1 上的辅助系统。

  1. 在 NODE1 上,运行以下命令将该站点启用为系统复制源系统。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_enable
    

    样本输出:

    # sudo -i -u hdbadm -- hdbnsutil -sr_enable
    nameserver is active, proceeding ...
    successfully enabled system as system replication source site
    done.
    
  2. 在 NODE3 上,通过 NODE1 在 SiteA 注册系统。

    sudo -i -u ${sid}adm -- \
        hdbnsutil -sr_register \
          --name=${DC3} \
          --remoteHost=${NODE1} \
          --remoteInstance=${INSTNO} \
          --replicationMode=async \
          --operationMode=logreplay \
          --online
    
    # sudo -i -u hdbadm -- hdbnsutil -sr_register --name=SiteC --remoteHost=cl-hdb-1 --remoteInstance=00 --replicationMode=async --operationMode=logreplay --online
    adding site ...
    collecting information ...
    updating local ini files ...
    done.
    
  3. 按照 检查 SAP HANA 系统复制状态中的说明验证所有三个节点上的系统复制状态

Test2- 测试将 SAPHana 资源手动移动到另一个节点

使用以下信息测试手动将 SAPHana 资源移动到另一个节点。

Test2- 说明

使用群集命令将主实例移动到另一个群集节点。

Test2- 先决条件

  • 用于 HANA 系统复制的功能性双节点 RHEL HA 附加集群。
  • 两个群集节点都处于活动状态。
  • 群集在 NODE1 和 NODE2 上启动。
  • 集群资源 SAPHana_${SID}_${INSTNO} 是通过 AUTOMATED_REGISTER=false 配置的。
  • 检查 SAP HANA 系统复制状态:
    • HANA 系统复制已激活并保持同步。
    • SAP HANA 主系统运行在 NODE2 上。
    • 二级 SAP HANA 系统在 NODE1 上运行。
    • 三级 SAP HANA 系统在 NODE3 上运行,并在 NODE1 上注册。

Test2- 测试程序

  1. 在 NODE3 上,先停止三级 HANA 系统,然后再执行一级系统向 NODE1 的受控移动。

    sudo -i -u ${sid}adm -- HDB stop
    
  2. 在群集节点上,运行以下命令将主节点移回 NODE1。

    pcs resource move SAPHana_${SID}_${INSTNO}-clone
    
  3. 请在 NODE1 上等待初选结果。 然后,在 NODE1 上注册 NODE2 与主系统。

    在 NODE2 上,运行以下命令。

    sudo -i -u ${sid}adm -- \
        hdbnsutil -sr_register \
          --name=${DC2} \
          --remoteHost=${NODE1} \
          --remoteInstance=${INSTNO} \
          --replicationMode=syncmem \
          --operationMode=logreplay \
          --online
    
  4. 在群集节点上,运行以下指令清除资源。

    pcs resource clear SAPHana_${SID}_${INSTNO}-clone
    

    该命令清除移动命令创建的位置约束。 群集在 NODE2 上启动 SAP HANA 系统。

  5. 在 NODE2 上,运行以下命令将该站点启用为系统复制源系统。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_enable
    
  6. 在 NODE3 上,运行以下命令在 NODE2 上注册系统。

    sudo -i -u ${sid}adm -- \
        hdbnsutil -sr_register \
          --name=${DC3} \
          --remoteHost=${NODE2} \
          --remoteInstance=${INSTNO} \
          --replicationMode=async \
          --operationMode=logreplay \
          --online
    
  7. 在 NODE3 上,启动三级 HANA 系统。

    sudo -i -u ${sid}adm -- HDB start
    
  8. 按照 检查 SAP HANA 系统复制状态中的说明验证所有三个节点上的系统复制状态

Test2- 预期行为

  • 集群会创建一个位置限制,以移动资源。
  • 群集触发对 NODE1 上辅助 HANA 系统的接管。
  • 如果应用程序(如 SAP NetWeaver )连接到 SAP HANA 的租户数据库,则应用程序会自动重新连接到新的主数据库。
  • 在 NODE1 上注册 NODE2 与主系统。
  • 运行 pcs resource clear 命令删除位置限制。 该命令会触发启动 NODE2 上的辅助实例。
  • 在 NODE3 上注册并启动 HANA 系统后,SiteC,三级 HANA 系统在 NODE2 注册。

Test2- 恢复程序

无需恢复程序。 测试序列重新建立了最初的 SAP HANA 多层系统复制拓扑结构。

Test3- 测试运行主数据库的节点故障

使用以下信息测试运行主数据库的节点是否发生故障。

Test3- 说明

模拟运行主 HANA 数据库的节点崩溃。

Test3- 先决条件

  • 用于 HANA 系统复制的功能性双节点 RHEL HA 附加集群。
  • 两个群集节点都处于活动状态。
  • 群集在 NODE1 和 NODE2 上启动。
  • 集群资源 SAPHana_${SID}_${INSTNO} 是通过 AUTOMATED_REGISTER=false 配置的。
  • 检查 SAP HANA 系统复制状态:
    • HANA 系统复制已激活并保持同步。
    • SAP HANA 主系统运行在 NODE1 上。
    • 二级 SAP HANA 系统在 NODE2 上运行。
    • 二级 SAP HANA 系统在 NODE3 上运行,并在 NODE2 上注册。

Test3- 测试程序

通过发送崩溃系统请求,在 NODE1 上崩溃主系统。

在 NODE1 上,运行以下命令。

sync; echo c > /proc/sysrq-trigger

Test3- 预期行为

  • NODE1 关闭。
  • 群集检测到故障节点,并将其状态设置为 OFFLINE
  • 群集会将 NODE2 上的辅助 HANA 数据库升级为新的主数据库。
  • 群集获取 NODE2 上的虚拟 IP 地址。
  • 如果应用程序(如 SAP NetWeaver )连接到 SAP HANA 的租户数据库,则应用程序会自动重新连接到新的主数据库。
  • 在 NODE3 上运行的三级 SAP HANA 系统仍在 NODE2 注册。

在 NODE2 上验证 SAP HANA 系统复制状态。

sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py

样本输出:

# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
|         |         |      |             |          |        |          |Host     |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-3 |    30001 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-3 |    30007 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-3 |    30003 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |

status system replication site "3": ACTIVE
overall system replication status: ACTIVE

Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mode: PRIMARY
site id: 2
site name: SiteB

Test3- 恢复程序

登录 IBM Cloud 控制台并启动 NODE1。

  1. 在 NODE1 上,运行以下命令向 NODE2 上的主系统注册系统。

    sudo -i -u ${sid}adm -- \
        hdbnsutil -sr_register \
          --name=${DC1} \
          --remoteHost=${NODE2} \
          --remoteInstance=${INSTNO} \
          --replicationMode=syncmem \
          --operationMode=logreplay \
          --online
    
  2. 在 NODE1 上,运行以下命令启动群集服务。

    pcs cluster start
    
  3. 在群集节点上,运行以下命令检查群集状态。

    pcs status --full
    
  4. 在 NODE2 上,验证 SAP HANA 系统复制状态。

    sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
    
    

    样本输出:

    # sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
    |Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
    |         |         |      |             |          |        |          |Host     |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
    |-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
    |SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-3 |    30001 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
    |HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-3 |    30007 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
    |HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-3 |    30003 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
    |SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-1 |    30001 |        1 |SiteA     |YES           |SYNCMEM     |ACTIVE      |               |        True |
    |HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-1 |    30007 |        1 |SiteA     |YES           |SYNCMEM     |ACTIVE      |               |        True |
    |HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-1 |    30003 |        1 |SiteA     |YES           |SYNCMEM     |ACTIVE      |               |        True |
    
    status system replication site "3": ACTIVE
    status system replication site "1": ACTIVE
    overall system replication status: ACTIVE
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 2
    site name: SiteB
    
  5. 运行 Test1- 恢复过程 中的步骤,在 SiteC 为 NODE3 重建 SAP HANA 系统复制多层拓扑。

  6. 运行 Test2 中的步骤 - 测试将 SAPHana 资源手动移动到另一个节点 以恢复到初始拓扑。

Test4- 测试辅助数据库实例故障

使用以下信息测试辅助数据库实例的故障。

Test4- 说明

模拟 HANA 备用数据库崩溃。

Test4- 先决条件

  • 用于 HANA 系统复制的功能性双节点 RHEL HA 附加集群。
  • 两个节点都处于活动状态。
  • 群集在 NODE1 和 NODE2 上启动。
  • 集群资源 SAPHana_${SID}_${INSTNO} 是通过 AUTOMATED_REGISTER=false 配置的。
  • 检查 SAP HANA 系统复制状态:
    • HANA 系统复制已激活并保持同步。
    • SAP HANA 主系统运行在 NODE1 上。
    • 二级 SAP HANA 系统在 NODE2 上运行。
    • 三级 SAP HANA 系统在 NODE3 上运行,并在 NODE2 上注册。

Test4- 测试程序

以用户 ${sid}adm 的身份发送 SIGKILL 信号,使 SAP HANA 二级程序崩溃。

在 NODE2 上,运行以下命令。

sudo -i -u ${sid}adm -- HDB kill-9

Test4- 预期行为

  • SAP HANA NODE2 上的二级碰撞。
  • 群集检测到已停止的二级 HANA 系统,并将资源标记为 failed
  • 群集重新启动辅助 HANA 系统。
  • 群集检测到系统复制再次同步。
  • NODE3 上运行的三级 SAP HANA 系统再次同步。

在 NODE1 上,定期检查 SAP HANA 系统复制状态,观察恢复步骤。

watch -n 5 sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py

样本输出:

# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary          |Replication |Replication |Replication                       |Secondary    |
|         |         |      |             |          |        |          |Host     |Port      |Site ID   |Site Name |Active Status      |Mode        |Status      |Status Details                    |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------------ |----------- |----------- |--------------------------------- |------------ |
|SYSTEMDB |cl-hdb-1 |30001 |nameserver   |        1 |      1 |SiteA     |cl-hdb-2 |    30001 |        2 |SiteB     |CONNECTION TIMEOUT |SYNCMEM     |ERROR       |Communication channel closed      |       False |
|HDB      |cl-hdb-1 |30007 |xsengine     |        2 |      1 |SiteA     |cl-hdb-2 |    30007 |        2 |SiteB     |CONNECTION TIMEOUT |SYNCMEM     |ERROR       |Communication channel closed      |       False |
|HDB      |cl-hdb-1 |30003 |indexserver  |        3 |      1 |SiteA     |cl-hdb-2 |    30003 |        2 |SiteB     |CONNECTION TIMEOUT |SYNCMEM     |ERROR       |Communication channel closed      |       False |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-3 |    30001 |        3 |SiteC     |                   |UNKNOWN     |UNKNOWN     |Site with id '2' is not reachable |       False |
|HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-3 |    30007 |        3 |SiteC     |                   |UNKNOWN     |UNKNOWN     |Site with id '2' is not reachable |       False |
|HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-3 |    30003 |        3 |SiteC     |                   |UNKNOWN     |UNKNOWN     |Site with id '2' is not reachable |       False |

status system replication site "2": ERROR
status system replication site "3": UNKNOWN
overall system replication status: ERROR

Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mode: PRIMARY
site id: 1
site name: SiteA

Test4- 恢复程序

等到辅助 HANA 实例再次启动并同步(SOK ),然后清理 pcs status 输出中显示的失败资源操作。

  1. 在群集节点上运行以下命令。

    pcs resource refresh SAPHana_${SID}_${INSTNO}
    
  2. 检查群组状态。

    pcs status --full
    

Test5- 在运行三级数据库的节点上测试 DR 激活

使用以下信息测试主工作区中两个节点的故障。

Test5- 说明

模拟运行主数据库和辅助 SAP HANA 数据库的节点崩溃。

Test5- 先决条件

  • 用于 HANA 系统复制的功能性双节点 RHEL HA 附加集群。
  • 两个群集节点都处于活动状态。
  • 群集在 NODE1 和 NODE2 上启动。
  • 集群资源 SAPHana_${SID}_${INSTNO} 是通过 AUTOMATED_REGISTER=false 配置的。
  • 检查 SAP HANA 系统复制状态:
    • HANA 系统复制已激活并保持同步。
    • SAP HANA 主系统运行在 NODE1 上。
    • 二级 SAP HANA 系统在 NODE2 上运行。
    • 三级 SAP HANA 系统在 NODE3 上运行,并在 NODE2 上注册。

Test5- 测试程序

通过在 NODE1 和 NODE2 两个节点上发送崩溃系统请求,使主节点和次节点崩溃

  1. 在 NODE1 上,运行以下命令。

    sync; echo c > /proc/sysrq-trigger
    
  2. 在 NODE2 上,运行以下命令。

    sync; echo c > /proc/sysrq-trigger
    
  3. 在 NODE3 上,运行以下命令将 HANA 系统激活为新的主系统。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_takeover
    

    样本输出:

    # sudo -i -u hdbadm -- hdbnsutil -sr_takeover
    done.
    

Test5- 预期行为

  • NODE1 和 立即停止。NODE2
  • 人工接管后,NODE3 运行主 SAP HANA 系统。
  • 应用程序(如 SAP NetWeaver )可以连接到 NODE3 上的 SAP HANA 系统。

在 NODE3 上,运行以下命令验证 SAP HANA 系统是否作为主系统运行。

sudo -i -u ${sid}adm -- hdbnsutil -sr_state

样本输出:

# sudo -i -u hdbadm -- hdbnsutil -sr_state

System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~

online: true

mode: primary
operation mode: primary
site id: 3
site name: SiteC

is source system: true
is secondary/consumer system: false
has secondaries/consumers attached: false
is a takeover active: false
is primary suspended: false

Host Mappings:
~~~~~~~~~~~~~~

cl-hdb-3 -> [SiteC] cl-hdb-3


Site Mappings:
~~~~~~~~~~~~~~
SiteC (primary/primary)

Tier of SiteC: 1

Replication mode of SiteC: primary

Operation mode of SiteC: primary


Hint based routing site:
done.

Test5- 恢复程序

接管三级 SAP HANA 系统后的恢复程序非常复杂,在本节中作为单独的测试进行记录。Test6 部分作为单独的测试进行记录。

Test6- 恢复原来的 SAP HANA 多层系统复制拓扑结构

在接管三级 SAP HANA 系统后,使用以下信息恢复到原始系统复制拓扑。

请查阅以下 SAP 文档。

Test6- 说明

在主工作区重新激活群集,并恢复原来的系统复制拓扑。

Test6- 先决条件

  • 双节点 RHEL HA 附加集群,用于在主工作区复制 HANA 系统。
  • 群集的两个虚拟服务器实例都已停止。
  • SAP HANA 主系统运行在 NODE3 上。

Test6- 测试程序

  1. 登录 IBM Cloud 控制台,同时启动 NODE1 和 NODE2。

  2. 等待,直到两个节点都再次可用。

  3. 确保 Red Hat HA Add-On 群集服务在两个群集节点 NODE1 和 NODE2 上都已停止。

  4. 在 NODE3 上,验证是否已启用 SAP HANA 系统复制。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_state
    
  5. 在 NODE1 上运行以下命令,以 NODE3 为主机名设置环境变量。

    export NODE3=<Hostname 3>   # Hostname of virtual server instance 3 (production tertiary)
    
  6. 在 NODE1 上,运行以下命令将 SAP HANA 系统与 NODE3 上的主系统注册。

    sudo -i -u ${sid}adm -- \
        hdbnsutil -sr_register \
          --name=${DC1} \
          --remoteHost=${NODE3} \
          --remoteInstance=${INSTNO} \
          --replicationMode=async \
          --operationMode=logreplay \
          --online
    
  7. 在 NODE1 上,检查系统复制配置。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_state
    

    样本输出:

    
    System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~
    
    online: false
    
    mode: async
    operation mode: unknown
    site id: 1
    site name: SiteA
    
    is source system: unknown
    is secondary/consumer system: true
    has secondaries/consumers attached: unknown
    is a takeover active: false
    is primary suspended: false
    is timetravel enabled: false
    replay mode: auto
    active primary site: 3
    
    primary masters: cl-hdb-3
    done.
    
  8. 在 NODE1 上,启动 SAP HANA 系统,开始系统复制。

    sudo -i -u ${sid}adm -- HDB start
    
  9. 在 NODE3 上,检查系统复制状态,并等待 NODE1 上的辅助系统完全同步。

    sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
    

    样本输出:

    # sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
    |Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
    |         |         |      |             |          |        |          |Host      |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
    |-------- |-------- |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
    |SYSTEMDB |cl-hdb-3 |30001 |nameserver   |        1 |      3 |SiteC     |cl-hdb-1  |    30001 |        1 |SiteA     |YES           |ASYNC       |ACTIVE      |               |        True |
    |HDB      |cl-hdb-3 |30007 |xsengine     |        2 |      3 |SiteC     |cl-hdb-1  |    30007 |        1 |SiteA     |YES           |ASYNC       |ACTIVE      |               |        True |
    |HDB      |cl-hdb-3 |30003 |indexserver  |        3 |      3 |SiteC     |cl-hdb-1  |    30003 |        1 |SiteA     |YES           |ASYNC       |ACTIVE      |               |        True |
    
    status system replication site "1": ACTIVE
    overall system replication status: ACTIVE
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 3
    site name: SiteC
    

您需要一个停机窗口来执行将主角色移回 NODE1。 必须停止所有连接到 NODE3 的应用程序服务器。

带有握手功能的接管会暂停 NODE3 上主系统上的所有事务,只有当 NODE1 上的所有剩余重做日志可用时,才会执行接管。

  1. 在 NODE1 上,运行以下命令接管主要角色。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_takeover --suspendPrimary
    
  2. 在 NODE1 上,检查 HANA 系统是否作为主系统运行。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_state
    
  3. 在 NODE3 上,运行以下命令验证系统复制状态。

    sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
    
    # sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
    |Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication                      |Secondary    |
    |         |         |      |             |          |        |          |Host     |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details                   |Fully Synced |
    |-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------------------------- |------------ |
    |SYSTEMDB |cl-hdb-3 |30001 |nameserver   |        1 |      3 |SiteC     |cl-hdb-1 |    30001 |        1 |          |PRIMARY       |            |            |IS PRIMARY (e.g. after takeover) |       False |
    |HDB      |cl-hdb-3 |30007 |xsengine     |        2 |      3 |SiteC     |cl-hdb-1 |    30007 |        1 |          |PRIMARY       |            |            |IS PRIMARY (e.g. after takeover) |       False |
    |HDB      |cl-hdb-3 |30003 |indexserver  |        3 |      3 |SiteC     |cl-hdb-1 |    30003 |        1 |          |PRIMARY       |            |            |IS PRIMARY (e.g. after takeover) |       False |
    
    status system replication site "1": ERROR
    overall system replication status: ERROR
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 3
    site name: SiteC
    

下面的摘要显示了这些步骤之后的状态。

  • NODE1 作为主运行,但未连接任何应用程序。
  • NODE2 已启动,但 尚未启动。SAP HANA
  • NODE3 已启动,并且 在 SAP HANA suspendPrimary 模式。
  • Red Hat HA Add-On 群集服务已在 和 上停止。NODE1 NODE2
  1. 在 NODE2 上,运行以下命令在 NODE1 上注册主服务器。

    sudo -i -u ${sid}adm -- \
        hdbnsutil -sr_register \
          --name=${DC2} \
          --remoteHost=${NODE1} \
          --remoteInstance=${INSTNO} \
          --replicationMode=syncmem \
          --operationMode=logreplay \
          --online
    
  2. 在 NODE2 上,启动 SAP HANA 以开始复制。

    sudo -i -u ${sid}adm -- HDB start
    
  3. 在 NODE1 上,检查系统复制状态,并等待 NODE2 上的辅助系统完全同步。

    sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
    

    样本输出:

    # sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
    |Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
    |         |         |      |             |          |        |          |Host      |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
    |-------- |-------- |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
    |SYSTEMDB |cl-hdb-1 |30001 |nameserver   |        1 |      1 |SiteA     |cl-hdb-2  |    30001 |        2 |SiteB     |YES           |SYNC        |ACTIVE      |               |        True |
    |HDB      |cl-hdb-1 |30007 |xsengine     |        2 |      1 |SiteA     |cl-hdb-2  |    30007 |        2 |SiteB     |YES           |SYNC        |ACTIVE      |               |        True |
    |HDB      |cl-hdb-1 |30003 |indexserver  |        3 |      1 |SiteA     |cl-hdb-2  |    30003 |        2 |SiteB     |YES           |SYNC        |ACTIVE      |               |        True |
    
    status system replication site "2": ACTIVE
    overall system replication status: ACTIVE
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 1
    site name: SiteA
    

下面的摘要显示了这些步骤之后的状态。

  • NODE1 作为主运行,但未连接任何应用程序。
  • NODE2 作为辅助运行。
  • NODE3 已启动,并且 在 SAP HANA suspendPrimary 模式。
  • Red Hat HA Add-On 群集服务已在 和 上停止。NODE1 NODE2
  1. 在群集节点上,运行以下命令启动群集。

    pcs cluster start --all
    
  2. 检查群组状态,确认其再次完全运行。

    pcs status --full
    

下面的摘要显示了这些步骤之后的状态。

  • NODE1 作为首要任务运行。
  • NODE2 作为辅助运行。
  • Red Hat HA Add-On 群集服务已启动,群集管理 和 上的 系统复制。NODE1 NODE2 SAP HANA
  • NODE3 已启动,并且 在 SAP HANA suspendPrimary 模式。
  1. 在 NODE2 上,运行以下命令将其启用为系统复制源站点。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_enable
    

    样本输出:

    # sudo -i -u hdbadm -- hdbnsutil -sr_enable
    nameserver is active, proceeding ...
    successfully enabled system as system replication source site
    done.
    
  2. 在 NODE2 上,检查系统复制配置。

    sudo -i -u ${sid}adm -- hdbnsutil -sr_state
    

    样本输出:

    # sudo -i -u hdbadm -- hdbnsutil -sr_state
    
    System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~
    
    online: true
    
    mode: sync
    operation mode: logreplay
    site id: 2
    site name: SiteB
    
    is source system: true
    is secondary/consumer system: true
    has secondaries/consumers attached: false
    is a takeover active: false
    is primary suspended: false
    is timetravel enabled: false
    replay mode: auto
    active primary site: 1
    
    primary masters: cl-hdb-1
    
    Host Mappings:
    ~~~~~~~~~~~~~~
    
    cl-hdb-2 -> [SiteB] cl-hdb-2
    cl-hdb-2 -> [SiteA] cl-hdb-1
    
    
    Site Mappings:
    ~~~~~~~~~~~~~~
    SiteA (primary/primary)
        |---SiteB (sync/logreplay)
    
    Tier of SiteA: 1
    Tier of SiteB: 2
    
    Replication mode of SiteA: primary
    Replication mode of SiteB: sync
    
    Operation mode of SiteA: primary
    Operation mode of SiteB: logreplay
    
    Mapping: SiteA -> SiteB
    
    Hint based routing site:
    done.
    
  3. 在 NODE3 上,运行以下命令在 NODE2 上注册系统。

    sudo -i -u ${sid}adm -- \
        hdbnsutil -sr_register \
          --name=${DC3} \
          --remoteHost=${NODE2} \
          --remoteInstance=${INSTNO} \
          --replicationMode=async \
          --operationMode=logreplay \
          --online
    
  4. 在 NODE1 上,运行以下命令验证新的 SAP HANA 系统复制拓扑。

    sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
    

    SiteC,NODE3 上的 SAP HANA 系统重新出现在 SAP HANA 系统复制拓扑中。 运行 hdbnsutil -sr_register 命令后,系统将停止运行,输出中将显示 CONNECTION TIMEOUT

    样本输出:

    # sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
    |Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary          |Replication |Replication |Replication    |Secondary    |
    |         |         |      |             |          |        |          |Host     |Port      |Site ID   |Site Name |Active Status      |Mode        |Status      |Status Details |Fully Synced |
    |-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------------ |----------- |----------- |-------------- |------------ |
    |SYSTEMDB |cl-hdb-1 |30001 |nameserver   |        1 |      1 |SiteA     |cl-hdb-2 |    30001 |        2 |SiteB     |YES                |SYNCMEM     |ACTIVE      |               |        True |
    |HDB      |cl-hdb-1 |30007 |xsengine     |        2 |      1 |SiteA     |cl-hdb-2 |    30007 |        2 |SiteB     |YES                |SYNCMEM     |ACTIVE      |               |        True |
    |HDB      |cl-hdb-1 |30003 |indexserver  |        3 |      1 |SiteA     |cl-hdb-2 |    30003 |        2 |SiteB     |YES                |SYNCMEM     |ACTIVE      |               |        True |
    |SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-3 |    30001 |        3 |SiteC     |CONNECTION TIMEOUT |ASYNC       |UNKNOWN     |               |       False |
    |HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-3 |    30007 |        3 |SiteC     |CONNECTION TIMEOUT |ASYNC       |UNKNOWN     |               |       False |
    |HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-3 |    30003 |        3 |SiteC     |CONNECTION TIMEOUT |ASYNC       |UNKNOWN     |               |       False |
    
    status system replication site "2": ACTIVE
    status system replication site "3": UNKNOWN
    overall system replication status: UNKNOWN
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 1
    site name: SiteA
    
  5. 在 NODE3 上,运行以下命令启动三级 HANA 系统。

    sudo -i -u ${sid}adm -- HDB start
    

下面的摘要显示了这些步骤之后的最终状态。

  • NODE1 作为首要任务运行。
  • NODE2 作为辅助运行。
  • Red Hat HA Add-On 群集服务已启动,群集管理 和 上的 系统复制。NODE1 NODE2 SAP HANA
  • NODE3 作为三级运行。

在 NODE1 上,运行以下命令验证 SAP HANA 系统复制拓扑。

sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py

样本输出:

# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
|         |         |      |             |          |        |          |Host      |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
|-------- |---------|----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-1 |30001 |nameserver   |        1 |      1 |SiteA     |cl-hdb-2  |    30001 |        2 |SiteB     |YES           |SYNC        |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30007 |xsengine     |        2 |      1 |SiteA     |cl-hdb-2  |    30007 |        2 |SiteB     |YES           |SYNC        |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30003 |indexserver  |        3 |      1 |SiteA     |cl-hdb-2  |    30003 |        2 |SiteB     |YES           |SYNC        |ACTIVE      |               |        True |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteB     |cl-hdb-3  |    30001 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteB     |cl-hdb-3  |    30007 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteB     |cl-hdb-3  |    30003 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |

status system replication site "2": ACTIVE
status system replication site "3": ACTIVE
overall system replication status: ACTIVE

Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mode: PRIMARY
site id: 1
site name: SiteA