5.4. 测试 2:通过被动第三个站点对主节点进行故障
| 测试的主题 | 没有第三个站点注册。 即使第三个站点停机,故障转移也可以正常工作。 |
| 测试前提条件 |
|
| 测试步骤 |
使用 |
| 启动测试 | 执行集群命令:
|
| 监控测试 |
在第三个站点上,以
在集群节点上,以 root 身份运行 |
| 预期结果 | 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 系统复制状态 中找到更多信息。