本节主要介绍如何执行无损 Failover 流程。

操作步骤

  1. 确认主集群处于不可用状态,即主集群上的所有 OBServer 均已宕机。

    为了保证安全,要求主备集群中只能存在一个真正的主集群。如果主集群可用,则在备集群上执行 Failover 命令会报错。因此,在执行 Failover 命令前,需要确认主集群处于不可用状态,避免后续 Failover 命令执行失败。

  2. 在各个备集群上查询保护模式和保护级别。

    1. obclient> SELECT PROTECTION_MODE, PROTECTION_LEVEL FROM V$OB_CLUSTER;
    2. +---------------------------+----------------------------+
    3. | PROTECTION_MODE | PROTECTION_LEVEL |
    4. +---------------------------+----------------------------+
    5. | MAXIMUM PROTECTION | MAXIMUM PROTECTION |
    6. +--------------------+--------------------+
    7. 1 row in set

    说明

    • 只有 PROTECTION_MODEPROTECTION_LEVEL 同时为 MAXIMUM PROTECTIONMAXIMUM AVAILABILITY 的备集群,才能执行无损 Failover,否则执行 Failover 命令会报错。

    • 如果您确认备集群上所有分区的数据是完整的、一致的,可以在 Failover 命令中添加 FORCE 关键字跳过保护模式和保护级别的检查 :ALTER SYSTEM FAILOVER TO 'obcluster' CLUSTER_ID=2 FORCE;

  3. 执行以下命令,将备集群无损切换为主集群。

    1. obclient> ALTER SYSTEM FAILOVER TO 'obcluster' CLUSTER_ID=2;

    Failover 命令执行后,集群会默认进入最大性能模式,原主集群和其他备集群均处于 DISABLED 状态,需要执行接入操作。

    • 查看集群保护模式

      1. obclient> SELECT CLUSTER_ID, CLUSTER_ROLE, CLUSTER_STATUS, PROTECTION_MODE, PROTECTION_LEVEL FROM V$OB_CLUSTER;
      2. +------------+--------------+----------------+---------------------+---------------------+
      3. | CLUSTER_ID | CLUSTER_ROLE | CLUSTER_STATUS | PROTECTION_MODE | PROTECTION_LEVEL |
      4. +------------+--------------+----------------+---------------------+---------------------+
      5. | 2 | PRIMARY | VALID | MAXIMUM PERFORMANCE | MAXIMUM PERFORMANCE |
      6. +------------+--------------+----------------+---------------------+---------------------+
      7. 1 row in set
    • 查看原主集群和其他备集群状态

      1. obclient> SELECT CLUSTER_ID, CLUSTER_ROLE, CLUSTER_STATUS FROM V$OB_STANDBY_STATUS;
      2. +------------+------------------+----------------+
      3. | CLUSTER_ID | CLUSTER_ROLE | CLUSTER_STATUS |
      4. +------------+------------------+----------------+
      5. | 1 | PHYSICAL STANDBY | DISABLED |
      6. +------------+------------------+----------------+
      7. 1 row in set
  4. (可选)触发合并。

    无损 Failover 执行成功后,如果集群的合并版本为 1,建议发起一轮合并,并且等待合并成功后再添加新的备集群,否则新添加的备集群会工作异常,不能执行 Switchover 等操作。