OceanBase 集群由若干个 Zone 组成。从物理层面来讲,一个 Zone 通常是一个独立的物理部署单元,可以是一个数据中心(IDC)或者云上的一个 Zone(可用区),也可以是一个单独的机架(Rack)。通过将 OceanBase 集群部署于不同的 Zone ,实现单个 Zone 故障时的故障隔离及快速恢复。
1.查看Zone
SELECT * FROM oceanbase.DBA_OB_ZONES;
查询结果中的字段说明如下:
- ZONE: Zone 名称。
- STATUS: Zone 状态。
ACTIVE :表示该 Zone 为可用状态。
INACTIVE :表示该 Zone 为不可用状态。用于客户端识别该状态并将业务流程路由到其他 Zone。 新增 Zone 或对 Zone 执行隔离命令(Stop Zone/Force Stop Zone/Isolate Zone)后,该 Zone 的状态会变为 INACTIVE。通常出现在故障隔离或运维变更等场景。
- IDC:Zone 所在的机房名。
- REGION:Zone 所在的区域,通常为城市名(例如,上海)或者区域名(例如,华东)。
- TYPE:Zone 类型,ReadWrite 表示读写类型,当前版本仅支持读写类型的 Zone。
2.添加 Zone
ALTER SYSTEM ADD ZONE zone_name [IDC [=] 'idc_name', REGION [=] 'region_name', ZONE_TYPE [=] 'ReadWrite'];
相关参数说明如下:
- zone_name:待添加的 Zone 的名称,每条语句每次仅支持添加一个 Zone。如果需要添加多个 Zone,需要重复执行该语句。
- idc_name:指定 Zone 所在机房的名称。如果不指定,默认为空。
- region_name:指定 Zone 所在 Region 的名称,如果不指定,默认值为 default_region。
- ZONE_TYPE:指定 Zone 的类型,当前版本仅支持读写 Zone(ReadWrite)。如果不指定,默认为读写 Zone。
3.启动 Zone
ALTER SYSTEM START ZONE zone4;
4.隔离 Zone
ALTER SYSTEM STOP ZONE zone4;
5.修改 Zone
ALTER SYSTEM {ALTER|CHANGE|MODIFY} ZONE zone_name SET [IDC [=]'idc_name', REGION [=]'region_name'];
相关参数说明如下:
- {ALTER|CHANGE|MODIFY} :表示 ALTER、CHANGE、MODIFY 三者的功能相同,可以使用任意一个关键字来修改 Zone 属性。
- zone_name:表示待修改的 Zone 的名称。每条语句每次仅支持修改一个 Zone。
- idc_name:指定 Zone 所在机房的名称。
- region_name:指定 Zone 所在 Region 的名称。
6.删除 Zone
#删除 Zone 前,请确认该 Zone 下已不存在节点,并且该 Zone 已停止。
ALTER SYSTEM DELETE ZONE zone4;