5.4. 测试 2:通过被动第三个站点对主节点进行故障


Expand

测试的主题

没有第三个站点注册。

即使第三个站点停机,故障转移也可以正常工作。

测试前提条件

  • 在 DC1 上 SAP HANA,DC2 正在运行,并在 DC3 上停止。
  • 集群已启动并在没有错误或警告的情况下运行。

测试步骤

使用 pcs move 命令移动 SAPHana 资源。

启动测试

执行集群命令:

[root@az1n1]# pcs move resource SAPHana_RH2_02-clone

监控测试

在第三个站点上,以 sidadm:% watch hdbnsutil -sr_stateConfiguration身份运行

在集群节点上,以 root 身份运行 :[root@az1n1]# watch pcs status

预期结果

DC3 上没有变化。复制保持旧关系。

返回初始状态的方法

在新主要上重新注册 DC3,并启动 SAP HANA。

详细描述

  • 以 root 用户身份在 az1n1 或 az2n1 上检查集群的初始状态:

    [root@az1n1]# pcs status --full

    此示例显示 HANA 在 az1n1 上提升,它是主 SAP HANA 服务器,克隆资源的名称是 SAPHana_RH2_02-clone,后者是可升级的。如果您在 HANA 之前运行测试 3,它可能会在 az2n1 上提升。

  • 停止 az3n1 上的数据库:

    az3n1:rh2adm> HDB stop
    hdbdaemon will wait maximal 300 seconds for NewDB services finishing.
    Stopping instance using: /usr/sap/RH2/SYS/exe/hdb/sapcontrol -prot NI_HTTP -nr 02 -function Stop 400
    
    12.07.2023 11:33:14
    Stop
    OK
    Waiting for stopped instance using:
    /usr/sap/RH2/SYS/exe/hdb/sapcontrol -prot NI_HTTP -nr 02 -function WaitforStopped 600 2
    
    12.07.2023 11:33:30
    WaitforStopped
    OK
  • 检查 az3n1 上的主数据库:

    az3n1:rh2adm> hdbnsutil -sr_stateConfiguration| grep -i "primary masters"
    
    primary masters: az2n1
  • 检查集群节点中的集群中当前的主要主要:

    [root@az1n1]# pcs resource | grep Masters
        * Masters: [ az2n1 ]
  • 检查 sr_state 以查看 SAP HANA 系统复制关系:

    az2n1:rh2adm> hdbnsutil -sr_state
    
    System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~
    
    online: true
    
    mode: primary
    operation mode: primary
    site id: 2
    site name: DC1
    
    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:
    ~~~~~~~~~~~~~~
    
    az1n1 -> [DC3] az3n1
    az1n1 -> [DC1] az1n1
    az1n1 -> [DC2] az2n1
    
    
    Site Mappings:
    ~~~~~~~~~~~~~~
    DC1 (primary/primary)
        |---DC3 (syncmem/logreplay)
        |---DC2 (syncmem/logreplay)
    
    Tier of DC1: 1
    Tier of DC3: 2
    Tier of DC2: 2
    
    Replication mode of DC1: primary
    Replication mode of DC3: syncmem
    Replication mode of DC2: syncmem
    
    Operation mode of DC1: primary
    Operation mode of DC3: logreplay
    Operation mode of DC2: logreplay
    
    Mapping: DC1 -> DC3
    Mapping: DC1 -> DC2
    done.

    SAP HANA 系统复制关系仍然有一个主(DC1),它被复制到 DC2 和 DC3。

    使用以下方法显示 az3n1 的复制关系:

    az3n1:rh2adm> hdbnsutil -sr_stateConfiguration
    
    System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: syncmem
    site id: 3
    site name: DC3
    active primary site: 1
    
    primary masters: az1n1
    done.

    az3n1 上的数据库,该数据库离线检查 global.ini 文件中的条目。

  • 启动测试:在集群中启动故障转移,移动 SAPHana-clone-resource 示例:

    [root@az1n1]# pcs resource move SAPHana_RH2_02-clone az2n1
    注意

    如果在 az2n1 上提升 SAPHana,则必须将克隆资源移到 az1n1。示例预期在 az1n1 上提升 SAPHana。

    没有输出。与前一个测试类似,会创建一个位置约束,该约束可通过以下命令显示:

    [root@az1n1]# pcs constraint location
    Location Constraints:
      Resource: SAPHana_RH2_02-clone
        Enabled on:
          Node: az1n1 (score:INFINITY) (role:Started)

    即使集群再次看起来正常,这个约束也会避免另一个故障转移,除非删除了约束。种方法是清除资源。

  • 清除资源:

    [root@az1n1]# pcs constraint location
    Location Constraints:
      Resource: SAPHana_RH2_02-clone
        Enabled on:
          Node: az1n1 (score:INFINITY) (role:Started)
    [root@az1n1]# pcs resource clear SAPHana_RH2_02-clone
  • 清理资源:

    [root@az1n1]# pcs resource cleanup SAPHana_RH2_02-clone
    Cleaned up SAPHana_RH2_02:0 on az2n1
    Cleaned up SAPHana_RH2_02:1 on az1n1
    Waiting for 1 reply from the controller
    ... got reply (done)
  • 检查当前状态。

    显示复制状态需要同步的方法有三种。从 az3n1 的主要开始:

    az3n1:rh2adm>  hdbnsutil -sr_stateConfiguration| grep -i primary
    active primary site: 1
    primary masters: az1n1

    输出显示站点 1 或 az1n1,这是启动测试前的主要部分,以将主设备移到 az2n1。

    接下来,检查新主服务器上的系统复制状态。

    首先检测新主:

    [root@az1n1]# pcs resource | grep  Master
        * Masters: [ az2n1 ]

    在这里,我们有一个不一致的,需要我们重新注册 az3n1。您可能认为如果再次运行测试,我们可以将主模式切回到原始 az1n1。在这种情况下,我们有第三个方法来识别系统复制是否正常工作。在主节点上运行:

    az2n1:rh2adm> cdpy
    az2n1:rh2adm> python ${DIR_EXECUTABLES}/python_support/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 |az2n1 |30201 |nameserver   |        1 |      2 |DC2       |az1n1    |    30201 |        1 |DC1       |YES           |SYNCMEM     |ACTIVE      |               |        True |
    |RH2      |az2n1 |30207 |xsengine     |        2 |      2 |DC2       |az1n1    |    30207 |        1 |DC1       |YES           |SYNCMEM     |ACTIVE      |               |        True |
    |RH2      |az2n1 |30203 |indexserver  |        3 |      2 |DC2       |az1n1    |    30203 |        1 |DC1       |YES           |SYNCMEM     |ACTIVE      |               |        True |
    
    status system replication site "1": ACTIVE
    overall system replication status: ACTIVE
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 2
    site name: DC2

    如果您在此输出中没有看到 az3n1,则必须重新注册 az3n1。在注册前,在主节点上运行以下命令以观察注册的进度:

    az2n1:rh2adm> watch python
    ${DIR_EXECUTABLES}/python_support/systemReplicationStatus.py

    现在,您可以使用以下命令重新注册 az3n1 :

    az3n1:rh2adm> hdbnsutil -sr_register --remoteHost=az2n1 --remoteInstance=${TINSTANCE} --replicationMode=async --name=DC3 --remoteName=DC2 --operation
    Mode=logreplay --online
    adding site ...
    collecting information ...
    updating local ini files ...
    done.

    即使 az3n1 上的数据库尚未启动,您也可以在系统复制状态输出中看到第三个站点。启动 az3n1 上的数据库以完成注册:

    az3n1:rh2adm> HDB start
    
    
    StartService
    Impromptu CCC initialization by 'rscpCInit'.
      See SAP note 1266393.
    OK
    OK
    Starting instance using: /usr/sap/RH2/SYS/exe/hdb/sapcontrol -prot NI_HTTP -nr 02 -function StartWait 2700 2
    
    
    04.09.2023 11:36:47
    Start
    OK

    上面启动的 monitor 立即显示 az3n1 的同步。

  • 要切换回来,请再次运行测试。一个可选测试是将主节点切换到节点,该节点在 az3n1 上的 global.ini 上配置,然后启动数据库。数据库可能出现,但永远不会显示在系统复制状态的输出中,除非它被重新注册。
  • 现在,缺少的条目会被立即创建,系统复制会在 SAP HANA 数据库启动时立即启动。
  • 执行以下命令检查以下内容:

    sidadm@az1n1% hdbnsutil -sr_state
    sidadm@az1n1% python systemReplicationStatus.py ; echo $?
  • 您可以在 Checking SAP HANA 系统复制状态 中找到更多信息
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部