本节主要介绍如何执行无损 Failover 流程。
操作步骤
确认主集群处于不可用状态,即主集群上的所有 OBServer 均已宕机。
为了保证安全,要求主备集群中只能存在一个真正的主集群。如果主集群可用,则在备集群上执行 Failover 命令会报错。因此,在执行 Failover 命令前,需要确认主集群处于不可用状态,避免后续 Failover 命令执行失败。
在各个备集群上查询保护模式和保护级别。
obclient> SELECT PROTECTION_MODE, PROTECTION_LEVEL FROM V$OB_CLUSTER;
+---------------------------+----------------------------+
| PROTECTION_MODE | PROTECTION_LEVEL |
+---------------------------+----------------------------+
| MAXIMUM PROTECTION | MAXIMUM PROTECTION |
+--------------------+--------------------+
1 row in set
说明
只有
PROTECTION_MODE
和PROTECTION_LEVEL
同时为MAXIMUM PROTECTION
或MAXIMUM AVAILABILITY
的备集群,才能执行无损 Failover,否则执行 Failover 命令会报错。如果您确认备集群上所有分区的数据是完整的、一致的,可以在 Failover 命令中添加
FORCE
关键字跳过保护模式和保护级别的检查 :ALTER SYSTEM FAILOVER TO 'obcluster' CLUSTER_ID=2 FORCE;
。
执行以下命令,将备集群无损切换为主集群。
obclient> ALTER SYSTEM FAILOVER TO 'obcluster' CLUSTER_ID=2;
Failover 命令执行后,集群会默认进入最大性能模式,原主集群和其他备集群均处于
DISABLED
状态,需要执行接入操作。查看集群保护模式
obclient> SELECT CLUSTER_ID, CLUSTER_ROLE, CLUSTER_STATUS, PROTECTION_MODE, PROTECTION_LEVEL FROM V$OB_CLUSTER;
+------------+--------------+----------------+---------------------+---------------------+
| CLUSTER_ID | CLUSTER_ROLE | CLUSTER_STATUS | PROTECTION_MODE | PROTECTION_LEVEL |
+------------+--------------+----------------+---------------------+---------------------+
| 2 | PRIMARY | VALID | MAXIMUM PERFORMANCE | MAXIMUM PERFORMANCE |
+------------+--------------+----------------+---------------------+---------------------+
1 row in set
查看原主集群和其他备集群状态
obclient> SELECT CLUSTER_ID, CLUSTER_ROLE, CLUSTER_STATUS FROM V$OB_STANDBY_STATUS;
+------------+------------------+----------------+
| CLUSTER_ID | CLUSTER_ROLE | CLUSTER_STATUS |
+------------+------------------+----------------+
| 1 | PHYSICAL STANDBY | DISABLED |
+------------+------------------+----------------+
1 row in set
(可选)触发合并。
无损 Failover 执行成功后,如果集群的合并版本为
1
,建议发起一轮合并,并且等待合并成功后再添加新的备集群,否则新添加的备集群会工作异常,不能执行 Switchover 等操作。