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 系统在群集中的虚拟服务器实例上运行,另一个辅助 HANA 系统在部署在灾难恢复 (DR) 站点的虚拟服务器实例上运行。 灾难恢复站点在另一个地理位置或区域的不同 IBM Power Virtual Server 工作区中实施。 SAP HANA 系统复制操作模式必须与所有多目标复制级别相同。

灾难恢复站点的辅助系统接管必须手动触发。

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

准备工作

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

先决条件

设置多目标情景

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

为简化群集操作,可将 SAPHana 资源的 AUTOMATED_REGISTER 群集属性设置为 true。 通过 AUTOMATED_REGISTER=true,当故障节点重新出现在群集中后,群集会将前一个主节点自动注册为新的次节点。

在群集节点上,运行以下命令验证资源的 AUTOMATED_REGISTER 群集属性。

pcs resource config SAPHana_${SID}_${INSTNO}

样本输出:

# pcs resource config SAPHana_${SID}_${INSTNO}
 Resource: SAPHana_HDB_00 (class=ocf provider=heartbeat type=SAPHana)
  Attributes: AUTOMATED_REGISTER=true DUPLICATE_PRIMARY_TIMEOUT=900 InstanceNumber=00 PREFER_SITE_TAKEOVER=True SID=HDB
  Operations: demote interval=0s timeout=3600 (SAPHana_HDB_00-demote-interval-0s)
              methods interval=0s timeout=5 (SAPHana_HDB_00-methods-interval-0s)
              monitor interval=121 role=Slave timeout=700 (SAPHana_HDB_00-monitor-interval-121)
              monitor interval=119 role=Master timeout=700 (SAPHana_HDB_00-monitor-interval-119)
              promote interval=0s timeout=3600 (SAPHana_HDB_00-promote-interval-0s)
              reload interval=0s timeout=5 (SAPHana_HDB_00-reload-interval-0s)
              start interval=0s timeout=3600 (SAPHana_HDB_00-start-interval-0s)
              stop interval=0s timeout=3600 (SAPHana_HDB_00-stop-interval-0s)

如果 AUTOMATED_REGISTER 群集属性当前设置为 false,请使用以下命令启用自动注册。

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

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

  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_dr_site.sh 的文件,请在 NODE3 上运行以下命令来设置环境变量。

source sap_dr_site.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 上,运行以下命令从 NODE1 复制文件 SSFS_${SID}.DATSSFS_${SID}.KEY

scp ${NODE1}:/usr/sap/${SID}/SYS/global/security/rsecssfs/data/SSFS_${SID}.DAT /usr/sap/${SID}/SYS/global/security/rsecssfs/data/SSFS_${SID}.DAT
scp ${NODE1}:/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 DR 系统复制系统

将 SAP HANA 系统注册为辅助 DR 系统复制实例。

  1. 在 NODE3 上,停止 SAP HANA 系统。

    sudo -i -u ${sid}adm -- HDB stop
    
  2. 在 NODE3 上,用 NODE1 注册二级 SAP HANA 实例。

    sudo -i -u ${sid}adm -- \
        hdbnsutil -sr_register \
          --name=${DC3} \
          --remoteHost=${NODE1} \
          --remoteInstance=${INSTNO} \
          --replicationMode=async \
          --operationMode=logreplay \
          --online
    
  3. 在 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 ${sid}adm -- 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-3  |    30001 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30007 |xsengine     |        2 |      1 |SiteA     |cl-hdb-3  |    30007 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30003 |indexserver  |        3 |      1 |SiteA     |cl-hdb-3  |    30003 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|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 |

status system replication site "3": ACTIVE
status system replication site "2": 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)
    |---SiteC (async/logreplay)
    |---SiteB (syncmem/logreplay)

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

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

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

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

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: 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 -> [SiteC] cl-hdb-3
cl-hdb-2 -> [SiteB] cl-hdb-2
cl-hdb-2 -> [SiteA] cl-hdb-1


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

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

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

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

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

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: 1

primary masters: cl-hdb-1

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)
    |---SiteC (async/logreplay)
    |---SiteB (syncmem/logreplay)

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

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

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

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

Hint based routing site:
done.
done.

在所有节点上运行以下命令,检查复制模式和运行模式。

sudo -i -u ${sid}adm -- \
    hdbnsutil -sr_state \
        --sapcontrol=1 2>/dev/null | grep -E "site(Operation|Replication)Mode"

样本输出:

# sudo -i -u ${sid}adm -- hdbnsutil -sr_state --sapcontrol=1 2>/dev/null | grep -E "site(Operation|Replication)Mode"
siteReplicationMode/SiteA=primary
siteReplicationMode/SiteB=syncmem
siteOperationMode/SiteA=primary
siteOperationMode/SiteB=logreplay

允许在收购后自动登记二级公司

在多目标复制场景中,SAP HANA 可自动重新注册接管前已注册的辅助设备。 要启用此功能,请将 global.ini 文件中 [system_replication] 部分的参数 register_secondaries_on_takeover 设置为 true。 SAP HANA 主系统故障切换到辅助系统后,另一个辅助系统会自动重新注册到新的主系统。

该选项必须添加到所有潜在主站点的 global.ini 文件中。

在所有三个节点上运行以下命令更改参数。

sudo -i -u ${sid}adm -- <<EOT
    python \$DIR_INSTANCE/exe/python_support/setParameter.py \
      -set SYSTEM/global.ini/system_replication/register_secondaries_on_takeover=true
EOT

验证 global.ini 配置文件中的 [system_replication] 部分。

cat /hana/shared/${SID}/global/hdb/custom/config/global.ini

测试 SAP HANA 系统复制群集

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

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

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

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

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

Test1- 说明

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

Test1- 先决条件

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

在 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-3  |    30001 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30007 |xsengine     |        2 |      1 |SiteA     |cl-hdb-3  |    30007 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|HDB      |cl-hdb-1 |30003 |indexserver  |        3 |      1 |SiteA     |cl-hdb-3  |    30003 |        3 |SiteC     |YES           |ASYNC       |ACTIVE      |               |        True |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver   |        1 |      2 |SiteA     |cl-hdb-2  |    30001 |        2 |SiteB     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30007 |xsengine     |        2 |      2 |SiteA     |cl-hdb-2  |    30007 |        2 |SiteB     |YES           |SYNCMEM     |ACTIVE      |               |        True |
|HDB      |cl-hdb-2 |30003 |indexserver  |        3 |      2 |SiteA     |cl-hdb-2  |    30003 |        2 |SiteB     |YES           |SYNCMEM     |ACTIVE      |               |        True |

status system replication site "3": ACTIVE
status system replication site "2": 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- 预期行为

  • NODE1 上的 SAP HANA 主实例崩溃。
  • 群集会检测到已停止的主控资源,并将其标记为 undefined
  • 群集将 NODE2 上的辅助 SAP HANA 系统升级为主系统。
  • 群集在 NODE1 上释放虚拟 IP 地址,并在 NODE2 上获取主 IP 地址。
  • 如果应用程序(如 SAP NetWeaver )连接到 SAP HANA 的租户数据库,则应用程序会自动重新连接到新的主数据库。
  • 灾难恢复站点 NODE3 上运行的辅助 HANA 系统会自动重新注册到在 NODE2 上运行的新主系统。
  • 群集等待 NODE2 上的主实例完全激活,并将 NODE1 上的故障实例注册为辅助实例。
  • 群集在 NODE1 上启动辅助 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 Oct  9 10:46:59 2023
  * Last change:  Mon Oct  9 10:46:54 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):        Slave cl-hdb-1
    * SAPHana_HDB_00    (ocf::heartbeat:SAPHana):        Master cl-hdb-2

Node Attributes:
  * Node: cl-hdb-1 (1):
    * hana_hdb_clone_state              : DEMOTED
    * hana_hdb_op_mode                  : logreplay
    * hana_hdb_remoteHost               : cl-hdb-2
    * hana_hdb_roles                    : 4:S:master1:master:worker:master
    * hana_hdb_site                     : SiteA
    * hana_hdb_sra                      : -
    * hana_hdb_srah                     : -
    * hana_hdb_srmode                   : syncmem
    * hana_hdb_sync_state               : SOK
    * hana_hdb_version                  : 2.00.070.00
    * hana_hdb_vhost                    : cl-hdb-1
    * lpa_hdb_lpt                       : 30
    * master-SAPHana_HDB_00             : 100
  * 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                   : syncmem
    * hana_hdb_sync_state               : PRIM
    * hana_hdb_version                  : 2.00.070.00
    * hana_hdb_vhost                    : cl-hdb-2
    * lpa_hdb_lpt                       : 1696841214
    * master-SAPHana_HDB_00             : 150

Migration Summary:
  * Node: cl-hdb-1 (1):
    * SAPHana_HDB_00: migration-threshold=5000 fail-count=1 last-failure='Mon Oct  9 10:39:58 2023'

Failed Resource Actions:
  * SAPHana_HDB_00_monitor_119000 on cl-hdb-1 'master (failed)' (9): call=31, status='complete', exitreason='', last-rc-change='2023-10-09 10:39:58 +02:00', queued=0ms, exec=0ms

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 |
|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 上的辅助系统会自动重新注册到运行在 NODE2 上的新主系统。 由于群集资源 SAPHana_${SID}_${INSTNO} 是通过 AUTOMATED_REGISTER=true 配置的,因此群集会自动将 NODE1 上的 SAP HANA 系统注册为 NODE2 上主系统的辅助系统。

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

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

Test2- 说明

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

Test2- 先决条件

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

Test2- 测试程序

  1. 在群集节点上,运行以下命令将主节点移回 NODE1。

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

    样本输出:

    # pcs resource move SAPHana_${SID}_${INSTNO}-clone
    Warning: Creating location constraint 'cli-ban-SAPHana_HDB_00-clone-on-cl-hdb-2' with a score of -INFINITY for resource SAPHana_HDB_00-clone on cl-hdb-2.
         This will prevent SAPHana_HDB_00-clone from running on cl-hdb-2 until the constraint is removed
         This will be the case even if cl-hdb-2 is the last node in the cluster
    

    NODE1 上的主实例激活后,SAP HANA 会自动将 NODE3 上的实例重新注册为 NODE1 的辅助实例。

  2. 请在 NODE1 上等待初选结果。 然后,删除位置限制。

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

    样本输出:

    # pcs resource clear SAPHana_${SID}_${INSTNO}-clone
    Removing constraint: cli-ban-SAPHana_HDB_00-clone-on-cl-hdb-2
    

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

  3. 按照 检查 SAP HANA 系统复制状态中的说明验证所有三个节点上的系统复制状态

Test2- 预期行为

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

Test2- 恢复程序

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

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

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

Test3- 说明

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

Test3- 先决条件

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

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- 恢复程序

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

  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. 运行 Test2 中的步骤 - 测试将 SAP Hana 资源手动移动到另一个节点 以恢复到初始拓扑。

Test4- 在灾难恢复站点运行的节点上测试灾难恢复启动

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

Test4- 说明

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

Test4- 先决条件

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

Test4- 测试程序

通过在 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.
    

Test4- 预期行为

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

NODE3 不是群集的一部分,在 HANA 系统复制接管后不会接管虚拟 IP 地址。 在 灾难恢复站点启动连接到 NODE3 的应用服务器需要额外的工作,本文件对此未作说明。

在 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
cl-hdb-3 -> [SiteB] cl-hdb-2


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

Tier of SiteC: 1

Replication mode of SiteC: primary

Operation mode of SiteC: primary


Hint based routing site:
done.

Test4- 恢复程序

接管 DR 站点后的恢复过程非常复杂,并在 Test5 部分中作为单独的测试记录。

Test5- 恢复原来的 SAP HANA 多目标系统复制拓扑结构

使用以下信息,在接管 DR 站点运行的 SAP HANA 系统后,恢复到原始系统复制拓扑。

请查阅以下 SAP 文档。

Test5- 说明

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

Test5- 先决条件

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

Test5- 测试程序

  1. 重新启动主工作区中的虚拟服务器实例。

    1. 登录 IBM Cloud 控制台,同时启动 NODE1 和 NODE2。
    2. 等待,直到两个节点都可用。
    3. 确保两个群集节点上的 Red Hat HA Add-On 群集服务都已停止。
  2. 在 NODE1 上将 SAP HANA 系统注册为辅助系统。

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

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

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

      sudo -i -u ${sid}adm -- \
          hdbnsutil -sr_register \
            --name=${DC1} \
            --remoteHost=${NODE3} \
            --remoteInstance=${INSTNO} \
            --replicationMode=async \
            --operationMode=logreplay \
            --online
      
    4. 在 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.
      
    5. 在 NODE1 上,启动 SAP HANA 系统,开始系统复制。

      sudo -i -u ${sid}adm -- HDB start
      
    6. 在 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
      
  3. 启动回退到主工作区。

    您需要一个停机窗口来执行将主角色移回 NODE1。

    为优化停机窗口,可在停机窗口之前将 NODE2 上的 SAP HANA 系统注册为 NODE3 的辅助系统。 缺点是在两个 Power Virtual Server 工作区之间传输的数据量较大。

    在下文中,NODE2 上的 SAP HANA 系统在 NODE1 重新成为主系统后被注册为 NODE1 的辅助系统。

    1. 停止连接到 NODE3 的所有应用程序和 SAP 应用服务器。

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

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

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

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

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

      样本输出:

      # sudo -i -u ${sid}adm -- hdbnsutil -sr_state
      
      System Replication State
      ~~~~~~~~~~~~~~~~~~~~~~~~
      
      online: true
      
      SUSPEND PRIMARY ACTIVE
      mode: primary
      operation mode: primary
      site id: 3
      site name: SiteC
      
      is source system: true
      is secondary/consumer system: false
      has secondaries/consumers attached: true
      is a takeover active: false
      is primary suspended: true
      
      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:
      ~~~~~~~~~~~~~~
      SiteC (primary/primary)
          |---SiteA (async/logreplay)
      
      Tier of SiteC: 1
      Tier of SiteA: 2
      
      Replication mode of SiteC: primary
      Replication mode of SiteA: async
      
      Operation mode of SiteC: primary
      Operation mode of SiteA: logreplay
      
      Mapping: SiteC -> SiteA
      
      Hint based routing site:
      done.
      

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

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

    1. 在 NODE2 上,运行以下命令将 SAP HANA 实例注册到 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           |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 |
      
      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
  5. 在 NODE1 和 NODE2 上重启群集。

    1. 停止 NODE1 和 NODE2 上的 SAP HANA 系统。

      在 NODE1 上,运行

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

      在 NODE2 上,运行

      sudo -i -u ${sid}adm -- HDB stop
      
    2. 在群集节点上,运行以下命令启动群集。

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

      pcs status --full
      
    4. 在 NODE1 上,检查系统复制状态。

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

      样本输出:

      # sudo -i -u ${sid}adm -- 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 |
      
      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 作为辅助运行。
    • Red Hat HA Add-On 群集服务已启动,群集管理 和 上的 系统复制。NODE1 NODE2 SAP HANA
    • NODE3 已启动,并且 在 SAP HANA suspendPrimary 模式。
  6. 在 NODE3 上将 SAP HANA 系统注册为辅助系统。

    1. 在 NODE3 上,运行以下命令在 NODE1 上注册系统。

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

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

      上一条 hdbnsutil -sr_register 命令会触发 SAP HANA 系统的重启。 在重启过程中,您可能会在输出中看到 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
      

      如果在执行 hdbnsutil -sr_register 命令后系统没有自动重启,则需要手动停止和启动系统。

      下面是这种情况的输出示例。 NODE3 的复制状态显示为 IS PRIMARY (e.g. after takeover),多次检查状态也不会改变。

      # sudo -i -u ${sid}adm -- 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-3 |    30001 |        3 |          |PRIMARY       |            |            |IS PRIMARY (e.g. after takeover) |       False |
      |HDB      |cl-hdb-1 |30007 |xsengine     |        2 |      1 |SiteA     |cl-hdb-3 |    30007 |        3 |          |PRIMARY       |            |            |IS PRIMARY (e.g. after takeover) |       False |
      |HDB      |cl-hdb-1 |30003 |indexserver  |        3 |      1 |SiteA     |cl-hdb-3 |    30003 |        3 |          |PRIMARY       |            |            |IS PRIMARY (e.g. after takeover) |       False |
      |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 |
      
      status system replication site "3": ERROR
      status system replication site "2": ACTIVE
      overall system replication status: ERROR
      
      Local System Replication State
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      mode: PRIMARY
      site id: 1
      site name: SiteA
      

      在 NODE3 上,运行以下命令重启辅助 HANA 系统。

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

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

    • NODE1 作为首要任务运行。
    • NODE2 作为辅助运行。
    • NODE3 在 DR 站点作为另一个辅助运行。
    • NODE2 和 都注册到。NODE3 NODE1
    • Red Hat HA Add-On 群集服务已启动,群集管理 和 上的 系统复制。NODE1 NODE2 SAP HANA

    在 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           |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