5.5. 测试 3:将主节点故障切换到第三个站点
| 测试的主题 | 将主站点故障转移到第三个站点...第三个站点成为主要站点。 辅助将重新注册到第三个站点。 |
| 测试先决条件 |
|
| 测试步骤 |
将集群设置为
使用 |
| 启动测试 |
在 remotehost3:rh2adm>: |
| 监控测试 |
在第三个站点中,作为 |
| 预期结果 |
|
| 返回初始状态的方法 |
详细描述
检查数据库是否使用 Check 数据库 运行,并检查复制状态:
clusternode2:rh2adm> hdbnsutil -sr_state | egrep -e "^mode:|primary masters"
clusternode2:rh2adm> hdbnsutil -sr_state | egrep -e "^mode:|primary masters"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出是:
mode: syncmem primary masters: clusternode1
mode: syncmem primary masters: clusternode1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这种情况下,主数据库是 clusternode1。如果在 clusternode1 上运行这个命令,您将获得:
mode: primary
mode: primaryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个主节点上,您还可以显示系统复制状态。它应该类似如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,我们有一个适当的环境,我们可以开始监控所有 3 个节点上的系统复制状态。在测试启动前,应启动 3 个监视器。执行测试时,输出将改变。因此,只要测试还没有完成,使它们保持运行。
在旧的主节点上,clusternode1 在测试过程中在一个单独的窗口中运行:
clusternode1:rh2adm> watch -n 5 'python /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?'clusternode1:rh2adm> watch -n 5 'python /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?'Copy to Clipboard Copied! Toggle word wrap Toggle overflow clusternode1 上的输出将是:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 remotehost3 上,运行相同的命令:
remotehost3:rh2adm> watch -n 5 'python /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?'remotehost3:rh2adm> watch -n 5 'python /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应将是:
this system is either not running or is not primary system replication site
this system is either not running or is not primary system replication siteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这将在测试启动故障转移后改变。在测试启动前,输出类似于主节点的示例。
在第二个节点上,启动:
clusternode2:rh2adm> watch -n 10 'hdbnsutil -sr_state | grep masters'
clusternode2:rh2adm> watch -n 10 'hdbnsutil -sr_state | grep masters'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将显示当前 master clusternode1,并在启动故障转移后立即切换。
-
为确保一切配置正确,还要检查
global.ini。 在 DC1、DC2 和 DC3 上检查
global.ini:在所有三个节点上,
global.ini应包含:[persistent] log_mode=normal [system_replication] register_secondaries_on_takeover=true
[persistent] log_mode=normal [system_replication] register_secondaries_on_takeover=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下方法编辑
global.ini:clusternode1:rh2adm>vim /usr/sap/${SAPSYSTEMNAME}/SYS/global/hdb/custom/config/global.iniclusternode1:rh2adm>vim /usr/sap/${SAPSYSTEMNAME}/SYS/global/hdb/custom/config/global.iniCopy to Clipboard Copied! Toggle word wrap Toggle overflow [可选] 将集群置于
maintenance-mode:pcs property set maintenance-mode=true
[root@clusternode1]# pcs property set maintenance-mode=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在测试过程中,您会发现故障转移将使用 和,而不设置
maintenance-mode。因此,您可以在不使用它的情况下运行第一个测试。在恢复时,应该完成它;我只想向您展示它使用和不使用。如果主设备无法访问,则此选项是一个选项。开始测试:故障切换到 DC3。在 remotehost3 上,请运行:
remotehost3:rh2adm> hdbnsutil -sr_takeover done.
remotehost3:rh2adm> hdbnsutil -sr_takeover done.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 测试已启动,现在请检查之前启动的 monitor 的输出。在 clusternode1 上,系统复制状态将丢失与 remotehost3 和 clusternode2 (DC2)的关系:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 集群仍然不会注意到此行为。如果您检查系统复制状态的返回码,则返回码 11 表示错误,这告诉您出现问题。如果您有访问权限,现在最好进入
maintenance-mode。remotehost3 变为新主设备,而 clusternode2 (DC2)会在 remotehost3 上自动注册为新主。
remotehost3 的系统复制状态的输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow returncode 15 还表示一切都是 okay,但 clusternode1 缺失。这必须手动重新注册。前一个主 clusternode1 没有被列出,因此复制关系会丢失。
设置
maintenance-mode。如果之前还没有完成,使用以下命令在集群的一个节点上设置
maintenance-mode:pcs property set maintenance-mode=true
[root@clusternode1]# pcs property set maintenance-mode=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来检查
maintenance-mode是否活跃:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 资源显示非受管状态,这表示集群处于
maintenance-mode=true。虚拟 IP 地址仍然在 clusternode1 上启动。如果要在另一个节点上使用此 IP,请在设置 maintanence-mode=true 前禁用vip_RH2_02_MASTER。pcs resource disable vip_RH2_02_MASTER
[root@clusternode1]# pcs resource disable vip_RH2_02_MASTERCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新注册 clusternode1。
当检查 clusternode1 上的
sr_state时,您会看到仅与 DC2 的关系:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 但是,当检查 DC2 时,主数据库服务器为 DC3。因此,DC1 的信息不正确。
clusternode2:rh2adm> hdbnsutil -sr_state
clusternode2:rh2adm> hdbnsutil -sr_stateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果我们在 DC1 上检查系统复制状态,则返回码为 12,这未知。因此,需要重新注册 DC1。
您可以使用此命令将以前的主 clusternode1 注册为 remotehost3 的新次要。
clusternode1:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=asyncsyncmem --name=DC1 --remoteName=DC3 --operationMode=logreplay --onlineclusternode1:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=asyncsyncmem --name=DC1 --remoteName=DC3 --operationMode=logreplay --onlineCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注册完成后,您将在 remotehost3 上看到复制三个站点,状态(返回代码)将变为 15。
如果此操作失败,则必须手动删除 DC1 和 DC3 上的复制关系。请按照 Register Secondary 中描述的说明进行操作。
例如,列出现有关系:
clusternode1:rh2adm> hdbnsutil -sr_state
clusternode1:rh2adm> hdbnsutil -sr_stateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除您可以使用的现有关系:
clusternode1:rh2adm> hdbnsutil -sr_unregister --name=DC2`
clusternode1:rh2adm> hdbnsutil -sr_unregister --name=DC2`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这通常不是必须的。我们假定测试 4 将在测试 3 后执行。因此,恢复步骤是运行测试 4。