当前版本支持最大性能、最大保护和最大可用三种保护模式,并且支持任意两种保护模式之间的相互切换。

背景信息

在切换保护模式前,请根据对性能、数据保护以及集群可用性的需求选择合适的保护模式。保护模式相关介绍请参见 保护模式概述

操作步骤

  1. 在主集群上,执行以下命令,查看当前集群的保护模式。

    1. obclient> SELECT CLUSTER_ROLE, PROTECTION_MODE FROM V$OB_CLUSTER;
    2. +----------------+--------------------------+
    3. | CLUSTER_ROLE | PROTECTION_MODE |
    4. +----------------+--------------------------+
    5. | PRIMARY | MAXIMUM PERFORMANCE|
    6. +----------------+--------------------------+
    7. 1 row in set
  2. 根据保护模式对日志传输参数的要求,为不同的备集群配置合适的日志传输参数,日志传输参数的详细介绍及配置方法请参见 日志传输服务 章节。

    不同保护模式对日志传输参数的要求如下:

    • 最大性能模式:无要求

    • 最大保护模式,有且仅有一个备集群可以配置为 SYNC 模式

    • 最大可用模式:有且仅有一个备集群可以配置为 SYNC 模式,可选择在备集群上配置 NET_TIMEOUT 参数

    在主集群上,执行以下命令,查看所有备集群的日志传输参数。

    1. obclient> SELECT CLUSTER_ID, REDO_TRANSPORT_OPTIONS FROM V$OB_STANDBY_STATUS;
    2. +-------------+-------------------------------------+
    3. | CLUSTER_ID | REDO_TRANSPORT_OPTIONS |
    4. +-------------+-------------------------------------+
    5. | 2 | SYNC NET_TIMEOUT = 30000000 |
    6. +-------------+-------------------------------------+
    7. 1 row in set
  3. 进行切换前的集群状态检查,确保能成功切换。

    从其他模式切换到最大性能模式或最大可用模式时,可跳过该步骤。但切换到最大保护模式前需要满足以下要求:

    • SYNC 备集群与主集群保持同步状态。

    • 主集群的所有 Server 均在线。

    如果不满足这两个要求,则从其他模式切换到最大保护模式时会失败。

    从其他模式切换到最大保护模式时,进行的操作如下:

    1. 登录主集群,查询 V$OB_STANDBY_STATUSSYNCHRONIZATION_STATUS 字段,获取目标备集群的同步状态。

      1. obclient> SELECT CLUSTER_ID, SYNCHRONIZATION_STATUS FROM V$OB_STANDBY_STATUS;
      2. +-------------+---------------------------------+
      3. | CLUSTER_ID | SYNCHRONIZATION_STATUS |
      4. +-------------+---------------------------------+
      5. | 2 | OK |
      6. +-------------+---------------------------------+
      7. 1 row in set

      仅当同步状态为 OK 时,备集群才与主集群保持同步状态;如果同步状态为其他值,需要排查备集群不同步的原因,SYNCHRONIZATION_STATUS 字段可能的取值及其含义请参见 v$ob_standby_status

    2. 登录主集群,查询 __ALL_SERVER 表,检查所有 Server 是否都在线。

      1. obclient> SELECT COUNT(*) FROM __ALL_SERVER WHERE STATUS != 'ACTIVE';
      2. +----------+
      3. | COUNT(*) |
      4. +----------+
      5. | 0 |
      6. +----------+
      7. 1 row in set
  4. 在主集群上,执行以下命令,切换保护模式。

    1. obclient> ALTER SYSTEM SET STANDBY CLUSTER TO MAXIMIZE {AVAILABILITY | PERFORMANCE | PROTECTION};
  5. 查询各个集群的保护模式和保护级别,检查是否切换成功。

    保护模式与保护级别字段的含义,请参见 保护模式与保护级别

    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