确保主集群配置正确后,您可以通过 SQL 命令开始新建备集群。

启动新建备集群流程

  1. 确定备集群的部署方式,安装 OBServer 二进制文件。

    要求备集群的 OceanBase 数据库版本与主集群保持一致。

  2. 启动备集群的 OBServer。

    要求备集群名与主集群名一致,集群 ID 在主备库配置中保证唯一。

  3. 在主集群上,执行备集群的 Bootstrap 命令。

    1. obclient> ALTER SYSTEM BOOTSTRAP CLUSTER STANDBY server_info_list
    2. PRIMARY_CLUSTER_ID primary_cluster_id
    3. PRIMARY_ROOTSERVICE_LIST primary_rs_list;

    执行命令后,备集群的 Root Server 会主动联系主集群的 Root Server,将自己注册到主集群上。

    此时,查询主集群的 V$OB_STANDBY_STATUS 视图可以看到该备集群的信息,CLUSTER_STATUSREGISTERED

  4. 在主集群上,执行添加备集群的命令,建立主备关系,开始数据同步。

    1. obclient>ALTER SYSTEM ADD CLUSTER standby_cluster_name CLUSTER_ID standby_cluster_id;

    此时查询主集群的 V$OB_STANDBY_STATUS 视图可以看到该备集群的 CLUSTER_STATUS 变为 VALID

后续处理

启动新建备集群流程会建立集群之间的主备关系,但备集群还不具备容灾能力,还需要持续监控备集群数据的同步状态,进行一些后续处理。

  1. 监控备集群租户的创建情况。

    建立主备关系后,备集群会选取最近一次 Major 版本作为快照,获取租户列表,执行创建租户的流程。创建租户的过程中需要分配资源,当主备集群采用异构部署时,可能会卡住,需要进行人工处理。如果备集群资源不足,可以定制 Unit 配置模板来保证租户创建成功,定制 Unit 配置模板的相关操作请参见 租户管理 章节。

  2. 优化备集群的拷贝速度。

    租户创建成功后,备集群会从主集群拷贝最近一次 Major 版本的全量数据,在全量数据拷贝完成之前,备集群不具备容灾能力,不支持 Failover 操作。为了加快全量数据的拷贝速度,您可以调整备集群的配置项。

    1. 执行以下命令,将 SERVER_DATA_COPY_IN_CONCURRENCYSERVER_DATA_COPY_OUT_CONCURRENCY 配置项的值设置为 10

      1. obclient> ALTER SYSTEM SET SERVER_DATA_COPY_IN_CONCURRENCY = 10
      2. obclient> ALTER SYSTEM SET SERVER_DATA_COPY_OUT_CONCURRENCY = 10;

      其中:

      • SERVER_DATA_COPY_IN_CONCURRENCY 用于设置单个节点迁入数据的最大并发数,取值范围为 [1,1000],默认值为 2。更多 SERVER_DATA_COPY_IN_CONCURRENCY 配置项的信息,请参见 server_data_copy_in_concurrency

      • SERVER_DATA_COPY_OUT_CONCURRENCY 用于设置单个节点迁出数据的最大并发数,取值范围为 [1,1000],默认值为 2。更多 SERVER_DATA_COPY_IN_CONCURRENCY 配置项的信息,请参见 server_data_copy_out_concurrency

    2. 修改 DATA_COPY_CONCURRENCY 配置项的值。建议按 DATA_COPY_CONCURRENCY=``Server数 * SERVER_DATA_COPY_IN_CONCURRENCY 配置。

      DATA_COPY_CONCURRENCY 用于设置系统中并发执行的数据迁移复制任务的最大并发数,取值范围为 [1+∞),默认值为 20。更多 DATA_COPY_CONCURRENCY 配置项的信息,请参见 data_copy_concurrency

      示例如下:

      1. obclient> ALTER SYSTEM SET DATA_COPY_CONCURRENCY = 30
    3. 从主集群拷贝数据会占用主备集群之间的网络带宽,您可以根据实际情况进行限速,即调整备集群单台 OBServer 的网络带宽限制参数 SYS_BKGD_NET_PERCENTAGE

      SYS_BKGD_NET_PERCENTAGE 配置项用于设置后台系统任务可占用网络带宽的百分比,默认为 60,表示 60%,取值范围为 [0, 100],更多 SYS_BKGD_NET_PERCENTAGE 配置项的信息,请参见 sys_bkgd_net_percentage

      1. obclient>ALTER SYSTEM SET SYS_BKGD_NET_PERCENTAGE = xx;

      注意

      完成备集群的数据拷贝后,建议根据情况恢复该配置项的值,否则将会影响主备集群的网络带宽。

  3. 监控备集群的同步状态,等待备集群完成数据拷贝,具备 Failover 能力。

    备集群在拷贝全量数据的过程中,普通租户的同步进度会显示为 0,您可以登录备集群,通过查询 V$OB_CLUSTER_STATS 视图查看各个普通租户的同步进度。

    其中:

    • MIN_SYS_TABLE_SCN 表示系统表的同步进度。

    • MIN_USER_TABLE_SCN 表示用户表的同步进度。

    待普通租户的同步进度展示为非 0 的值后,则表示普通租户的所有分区的全量数据已拷贝完成。当所有普通租户的全量数据拷贝完成后,备集群的 V$OB_CLUSTER 视图的 CURRENT_SCN 字段会显示为非 0 值。

    注意

    • 系统租户在主备集群上是独立的,不会物理同步,系统租户的 MIN_SYS_TABLE_SCNMIN_USER_TABLE_SCN 不是同步进度的含义,而是表示当前系统租户最新的快照版本。

    • 当没有普通租户时,备集群的 V$OB_CLUSTER 视图的 CURRENT_SCN 字段会一直显示为 0

    各个分区的全量数据拷贝完成后,系统会自动同步 REDO 日志。您可以在主集群上查询 V$OB_STANDBY_STATUS 视图的 SYNCHRONIZATION_STATUS 字段,查看备集群的同步状态。

    1. obclient> SELECT SYNCHRONIZATION_STATUS FROM V$OB_STANDBY_STATUS WHERE CLUSTER_ID = standby_cluster_id;

    如果 SYNCHRONIZATION_STATUS 字段显示为 OK,则表示备集群与主集群已经保持同步了,备集群已具备 Failover 能力。

  4. 修改备集群的配置项。

    备集群创建后,不会自动同步主集群的配置项,您可以根据需要修改备集群的配置项值,特别是主集群上已经修改的配置项,需要评估是否也需要在备集群上设置。

  5. 设置保护模式。

    备集群创建后,您可以根据需要修改保护模式。新建第一个备集群时,默认保护模式为最大性能模式,保护模式的切换请参见 切换保护模式