如何部署两地三中心高可用 OceanBase 集群

本文主要介绍 OceanBase 数据库的两地三中心部署模式。

OceanBase 数据库支持两地三中心部署,即本地两个机房,远程一个机房。更多的时候,由于距离问题,希望数据库都运行在本地机房,而远程机房一般作为备份和只读。类似的部署方式如下图所示:

假设两地三机房分别是 AZ1、AZ2、AZ3 三个机房,其中 AZ1、AZ2 为本地机房,AZ3 为远程机房,为了实现 OceanBase 的 leader 副本在大部分时间内都在本地两个机房内提供服务,可以利用 Region 概念,将两地三机房划分成两个 Region。

说明

Region 是 OceanBase 数据库集群地域信息,通常代表一个城市,包含一个或多个 IDC,每个 IDC 部署一个或多个 zone。一个 OceanBase 数据库集群可以包含若干个 Region,每个 Region 包含若干个 IDC,每个 IDC 部署若干 OBServer。根据不同 Region 和 IDC,OceanBase 客户端与 OBServer 或 OBServer 之间的位置关系可以分为以下三种情况(三者优先级依次降低):

1.同 Region 同 IDC

2.同 Region 不同 IDC

3.不同 Region

操作步骤

将机房划分成两个 Region,两个机房 AZ1 和 AZ2 为一个 Region,OceanBase 数据库的切换主要在该 Region 上进行,而 AZ3 机房因为距离问题,不承担切换任务。具体的方法如下:

  1. 设置 Zone 的 Region 信息。

其中本地机房 AZ1 和 AZ2 的 Region 为 SHENZHEN,远程机房 AZ3 的 Region 为 HANGZHOU。

obclient> ALTER SYSTEM MODIFY ZONE “AZ1” SET REGION = “SHENZHEN”; obclient> ALTER SYSTEM MODIFY ZONE “AZ2” SET REGION = “SHENZHEN”; obclient> ALTER SYSTEM MODIFY ZONE “AZ3” SET REGION = “HANGZHOU”;

  1. 创建租户时,需要指定 Primary Zone。

obclient> CREATE TENANT IF NOT EXISTS t1 charset=‘utf8mb4’, replica_num=1, zone_list=(‘AZ1’,‘AZ2’), primary_zone=‘AZ1’, resource_pool_list=(‘pool1’);

其中,在 zone_list中配置的本地机房 AZ1 和 AZ2 具有相同的 Region,可以实现 OceanBase 租户的 Primary Zone 始终在本地两机房,保证业务的性能。