---
title: "租户跨 Zone 资源管理 - OceanBase 数据库 V4.3.1 | OceanBase 文档中心"
description: 租户跨 Zone 资源管理 租户的跨 Zone 资源管理是一种通过调整资源池的 Zone 分布范围来调整租户每一份数据的副本数，进而改变租户数据容灾能力的资源管理方式。 对资源池的 ZONE_LIST 支持如下几种类型的操作： ZONE_LIST 变更 分裂资源池 合并资源池 ZONE_LIST 的变更 调整资源池的…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.1

# 租户跨 Zone 资源管理

更新时间：2026-04-10 11:58:01

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.1/zh-CN/700.reference/100.oceanbase-database-concepts/500.distributed-database-objects/400.dynamic-scaling/200.scale-in-and-scale-out-of-tenant-resources/400.tenant-cross-zone-resource-management.md)  

租户的跨 Zone 资源管理是一种通过调整资源池的 Zone 分布范围来调整租户每一份数据的副本数，进而改变租户数据容灾能力的资源管理方式。

对资源池的 `ZONE_LIST` 支持如下几种类型的操作：

- `ZONE_LIST` 变更
 - 分裂资源池
 - 合并资源池

## ZONE_LIST 的变更

调整资源池的 `ZONE_LIST`，可以调整资源池在 Zone 维度的使用范围，从而调整租户数据在 Zone 维度的服务范围。

调整资源池 `ZONE_LIST` 的示例语句如下：

```sql
obclient> CREATE RESOURCE POOL pool1 UNIT_NUM=3, UNIT='unit_config', ZONE_LIST=('z1','z2','z3');
obclient> CREATE RESOURCE POOL pool2 UNIT_NUM=3, UNIT='unit_config', ZONE_LIST=('z1','z2','z3');
obclient> ALTER RESOURCE POOL pool1 ZONE_LIST=('z1','z2','z3','z4');
obclient> ALTER RESOURCE POOL pool2 ZONE_LIST=('z1','z2');

```

`ZONE_LIST` 的变更可以分为两类，即扩大 Zone 维度的使用范围和缩小 Zone 维度的使用范围。示例语句 `ALTER RESOURCE POOL pool1 ZONE_LIST=('z1','z2','z3','z4');` 是扩大 Zone 维度使用范围，示例语句 `ALTER RESOURCE POOL pool2 ZONE_LIST=('z1','z2');` 是缩小 Zone 维度使用范围。

### 扩大 Zone 维度的使用范围

扩大 Zone 维度的使用范围通常使用在以下两个场景中：

- 场景 1 ：租户副本数升级，以提高租户的可用性。
 - 场景 2：数据从一个机房（Zone）搬迁到另一个机房（Zone）时，在新机房中进行数据补全。

下面通过示例介绍这 2 种使用场景：

- 场景 1：副本数升级示例

  需要将租户 `tt` 从 3 副本升级为 5 副本，数据范围从 `'z1', 'z2', 'z3'` 扩大到 `'z1','z2','z3','z4','z5'`，以便提高租户的可用性。

  ```sql
  obclient>CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1', 'z2', 'z3');
  obclient>CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0');

  obclient>ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4');
  obclient>ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//在 z4 上为租户 tt 增加数据

  obclient>ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4','z5');
  obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4,F@z5";//在 z5 上为租户 tt 增加数据

  ```
 - 场景 2：在新机房中补全数据

  新机房内的数据补全是数据在机房内搬迁的一个子操作，假设租户期望将机房 `z1` 的数据搬迁到 `z4`，则新机房的数据补全的具体操作如下：

  ```sql
  obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1', 'z2', 'z3');
  obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0');

  // 以下为新机房中数据补全子操作
  obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4');
  obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//在 z4 上为租户 tt 增加数据
  // 接着再从旧机房中删除数据的子操作可以参考缩小 Zone 维度的使用范围

  ```

  以上操作帮助租户先在 `z4` 机房内添加数据，完成了数据在机房间搬迁过程中，在新机房补全数据的操作。

### 缩小 Zone 维度的使用范围

缩小 Zone 维度的使用范围通常使用在以下 2 个场景中：

- 场景 1：租户副本数降级，以减少租户的存储资源使用量。
 - 场景 2：数据从一个机房（Zone）搬迁到另一个机房（Zone）时，在旧机房中删除数据。

- 场景 1：副本数降级示例

  需要将租户 tt 从 5 副本降级为 3 副本，数据范围从 `'z1','z2','z3','z4','z5'` 缩小到 `'z1','z2','z3'`。减少租户存储资源使用量。

  ```sql
  obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1','z2','z3','z4','z5');
  obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0');

  obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//在 z5 上为租户 tt 删除数据
  obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4'); // 为资源池删除 z5
  obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3";//在 z4 上为租户 tt 删除数据
  obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3'); // 为资源池删除 z4

  ```
 - 场景 2：从旧机房中删除数据示例

  旧机房内的数据删除是数据在机房内搬迁的另一个子操作，假设租户期望将机房 `z1` 的数据搬迁到 `z4`。则旧机房的数据删除的具体操作如下：

  // 以下为新机房中数据补全子操作
  obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4');
  obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//在 z4 上为租户 tt 增加数据

  // 以下为旧机房中数据删除子操作
  obclient> ALTER TENANT tt locality="F@z2,F@z3,F@z4";//先在 z1 上为租户 tt 删除数据
  obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z2','z3','z4');

  ```

  上面的操作帮助租户先在 `z4` 机房内添加数据，然后在 `z1` 机房内删除数据，将租户数据从 `z1` 搬迁到 `z4`。

## 分裂资源池

分裂资源池操作可将一个资源池分裂为多个资源池，分裂资源池操作的基本语法和示例如下：

```sql
obclient> CREATE RESOURCE POOL pool1 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z1','z2','z3');
obclient> ALTER RESOURCE POOL pool1 SPLIT INTO ('pool10','pool11','pool12') ON ('z1','z2','z3');
obclient> ALTER RESOURCE POOL pool10 UNIT='uc1';
obclient> ALTER RESOURCE POOL pool11 UNIT='uc2';
obclient> ALTER RESOURCE POOL pool12 UNIT='uc3';

```

分裂资源池的操作主要应用在如下场景中：资源池 `pool1` 的当前使用范围是 `z1`、`z2`、`z3`，而资源配置规格均为 `uc0`，由于 `z1`、`z2`、`z3` 等 3 个 Zone 上的物理机规格可能有较大差别，3 个 Zone 内如果使用同一个资源规格 `uc0`，无法充分利用每个 Zone 内物理机的资源。分裂资源池可以将一个多 Zone 资源池分裂为多个单 Zone 资源池，再为每个单 Zone 资源池配置各自的资源配置规格。

在该示例中，将一个 `'z1','z2','z3'` 跨度的多 Zone 资源池`pool1` 分裂成三个单 Zone 的资源池 `pool10`（`ZONE_LIST` 为 `z1`，并继承 `pool1`之前在 `z1` 上的资源单元）、`pool11`（`ZONE_LIST` 为 `z2`，并继承 `pool1` 之前在 `z2` 上的资源单元）和 `pool12` （`ZONE_LIST` 为 `z3`，并继承 `pool1` 之前在 `z3` 上的资源单元）。分裂完成后，`pool10`、`pool11`、`pool12` 的默认资源配置仍然为 `pool1` 的资源配置 `uc0`，用户可根据各 Zone 的资源情况自行调整各新资源池的资源配置。

## 合并资源池

合并资源池操作可以将多个资源池合并为一个资源池，合并资源池操作的基本语法和示例如下：

```sql
obclient> CREATE RESOURCE POOL pool1 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z1');
obclient> CREATE RESOURCE POOL pool2 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z2');
obclient> CREATE RESOURCE POOL pool3 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z3');
obclient> ALTER RESOURCE POOL MERGE ('pool1','pool2','pool3') INTO ('pool0');

```

合并资源池是分裂资源池的逆操作。合并资源池的操作主要应用在如下场景中：资源池 `pool1` 的当前使用范围是 `z1`，资源配置为 `uc0`；资源池 `pool2` 的当前使用范围是 `z2`，资源配置为 `uc0`，资源池 `pool3` 的当前使用范围是 `z3`，资源配置规格为 `uc0。`由于 `pool1`、`pool2`、`pool3` 这 3 个资源池使用相同的资源配置规格，可以将多个资源池合并为一个资源池，降低资源池的管理和运维成本。

在该示例中，将三个单 Zone 资源池 `pool1`、`pool2`、`pool3` 合并成一个多 Zone 资源池 `pool0`。

合并资源池有以下两个限制：

- 被合并的资源池的 `UNIT_NUM` 需要相等。
 - 被合并的资源池的资源配置需要是同一个。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
