部署 OceanBase 集群过程中,需要指定每台 OBServer 的区域(Region)与机房(IDC)。Region 和 IDC 是 OceanBase 数据库负载均衡和 SQL 语句路由策略的参考项,Region 或 IDC 设置不正确时需要修改。本文以单 Region 修改为 2 Region 3 IDC 为例,介绍如何修改 OceanBase 集群的区域与机房信息。
现有 9 台 OBServer 的 REGION 为 bj,IDC 为 bj_dxh,IP 地址为 xxx.xxx.xxx.1 ~ xxx.xxx.xxx.9。该集群具有三个 Zone,分别为 cim_sc_z1、cim_sc_z2、cim_sc_z3,三个 Zone 的 REGION 均为 bj,IDC 均为 bj_dxh。
现要将 cim_sc_z1、cim_sc_z2 的 REGION 设置为 bj_0,cim_sc_z3 的 REGION 设置为 bj_1。将 cim_sc_z1 的 IDC 设置为 bj_dxh1,cim_sc_z2 的 IDC 设置为 bj_dxh2,cim_sc_z3 的 IDC 设置为 bj_dxh3。
适用版本
OceanBase 数据库所有版本
修改 OCP MetaDB 库
登录 OCP MetaDB 库。
查询名称为
bj的 REGION 的 ID。obclient> SELECT name,id FROM compute_region WHERE name='bj';将原来的 REGION 修改为
bj_0,再创建一个新的 REGIONbj_1。obclient> UPDATE compute_region SET name='bj_0' WHERE id=1000001; obclient> INSERT INTO compute_region(name,create_time,update_time) VALUES ('bj_1',now(),now());将原来的 IDC 修改为
bj_dxh_0,再创建两个新的 IDCbj_dxh_1与bj_dxh_2。obclient> UPDATE compute_idc SET name='bj_dxh_0' WHERE id=1000001; obclient> INSERT INTO compute_idc(name,create_time,update_time,region_id) VALUES ('bj_dxh_1',now(),now(),1000001); obclient> INSERT INTO compute_idc(name,create_time,update_time,region_id) VALUES ('bj_dxh_2',now(),now(),1000002);将 9 台 OBServer 分配到三个 IDC 中。
obclient> UPDATE compute_host SET idc_id=1000002 WHERE inner_ip_address IN ('xxx.xxx.xxx.4','xxx.xxx.xxx.5','xxx.xxx.xxx.6'); obclient> UPDATE compute_host SET idc_id=1000003 WHERE inner_ip_address IN ('xxx.xxx.xxx.7','xxx.xxx.xxx.8','xxx.xxx.xxx.9');
修改 OceanBase 数据库集群
在更改了 Region 与 IDC 的各台 OBServer 上执行以下语句,进行以下设置。
- 将
cim_sc_z1的 IDC 设置为bj_dxh_0,REGION 设置为bj_0。
obclient> ALTER SYSTEM ALTER ZONE cim_sc_z1 SET idc = "bj_dxh_0";
obclient> ALTER SYSTEM ALTER ZONE cim_sc_z1 SET region = "bj_0";
cim_sc_z2的 IDC 设置为bj_dxh_1,REGION 设置为bj_0。
obclient> ALTER SYSTEM ALTER ZONE cim_sc_z2 SET idc = "bj_dxh_1";
obclient> ALTER SYSTEM ALTER ZONE cim_sc_z2 SET region = "bj_0";
cim_sc_z3的 IDC 设置为bj_dxh_2,REGION 设置为bj_1。
obclient> ALTER SYSTEM ALTER ZONE cim_sc_z3 SET idc = "bj_dxh_2";
obclient> ALTER SYSTEM ALTER ZONE cim_sc_z3 SET region = "bj_1";
修改 OBProxy 的配置
在所有 OBServer 上执行以下语句,修改 OBProxy 的配置。
obclient> ALTER PROXYCONFIG SET proxy_idc_name='bj_dxh_0';