---
title: "调整副本分布 - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: 调整副本分布 本文介绍如何通过修改集群中某个租户的 Locality 来调整租户下日志流的副本分布。 有关修改 Locality 的详细操作和注意事项，参见 修改 Locality 。 前提条件 变更 Locality 之前，需要确认待变更的 Zone 上各节点的资源分配情况。如果 Zone 上的节点资源不足导致无法…
---
切换语言

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

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

# 调整副本分布

更新时间：2026-07-01 12:47:32

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/600.manage/300.replica-management/200.replica-distribution/200.locality-common-operations/500.adjust-replica-distribution.md)  

本文介绍如何通过修改集群中某个租户的 Locality 来调整租户下日志流的副本分布。

有关修改 Locality 的详细操作和注意事项，参见 [修改 Locality](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682966)。

## 前提条件

变更 Locality 之前，需要确认待变更的 Zone 上各节点的资源分配情况。如果 Zone 上的节点资源不足导致无法存放租户需要的资源单元，将导致无法进行 Locality 变更。

有关 Zone 上各节点的资源分配情况，请参见 [查看租户和资源信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682449)。

## 注意事项

- 租户的 Locality 不可以为空。
 - 当租户的 Locality 发生变更时，在该租户下，所有表的副本分布情况也会随之变化。
 - 在旧一轮租户 Locality 没有完成变更时，新一轮的租户 Locality 变更不允许被执行。
 - Locality 变更一次只能执行一个动作，例如把 Zone3 替换为 Zone4，不能直接替换，可以先增加一个 Zone4，然后再减少一个 Zone3。
 - 通过增加副本会导致租户 Locality 与 租户 Primary Zone 不匹配，如果增加的 Zone 参与切主，则需要修改 Primary Zone；如果增加的 Zone 不参与切主，则不需要修改 Primary Zone。

## 操作步骤

示例：通过修改租户 `mysql001` 的 Locality，由 `FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3` 修改为 `FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone4`。

1. 使用 root 用户登录到集群的 sys 租户。

   ```shell
   obclient -h172.30.xxx.xxx -P2883 -uroot@sys#obdemo -pxxxx -A

   ```
 2. 进入 `oceanbase` 数据库。

   ```shell
   obclient(root@sys)[(none)]> USE oceanbase;

   ```
 3. 查看租户 `mysql001` 修改前的 Locality。

   ```shell
   obclient(root@sys)[oceanbase]> SELECT TENANT_ID, TENANT_NAME, TENANT_TYPE, PRIMARY_ZONE, LOCALITY FROM oceanbase.DBA_OB_TENANTS;

   ```

   查询结果如下：

   ```shell
   +-----------+-------------+-------------+-------------------+---------------------------------------------+
   | TENANT_ID | TENANT_NAME | TENANT_TYPE | PRIMARY_ZONE      | LOCALITY                                    |
   +-----------+-------------+-------------+-------------------+---------------------------------------------+
   |         1 | sys         | SYS         | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 |
   |      1001 | META$1002   | META        | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 |
   |      1002 | mysql001    | USER        | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 |
   +-----------+-------------+-------------+-------------------+---------------------------------------------+
   3 rows in set

   ```

   可以看到租户 `mysql001` 分别在 zone1 、zone2 和 zone3 上有一个全能型副本。
 4. 修改租户 `mysql001` 的 Locality，增加一个 zone4 的副本。

   ```shell
   obclient(root@sys)[oceanbase]> ALTER TENANT mysql001 locality="FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone4";

   ```
 5. 查看 Locality 变更任务的执行状态。

   ```shell
   obclient(root@sys)[oceanbase]> SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE = 'ALTER_TENANT_LOCALITY';

   ```

   查询结果如下：

   ```shell
   +--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+---------------------------------------------------------------------------------------------+---------------------------------------------+----------------+-------------+
   | JOB_ID | JOB_TYPE              | JOB_STATUS | RESULT_CODE | PROGRESS | START_TIME                 | MODIFY_TIME                | TENANT_ID | SQL_TEXT                                                                                    | EXTRA_INFO                                  | RS_SVR_IP      | RS_SVR_PORT |
   +--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+---------------------------------------------------------------------------------------------+---------------------------------------------+----------------+-------------+
   |      1 | ALTER_TENANT_LOCALITY | SUCCESS    |        NULL |        0 | 2023-01-05 19:38:38.416011 | 2023-01-05 19:38:38.416011 |      1002 | ALTER TENANT mysql001 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone4' | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | xx.xx.xx.237   |        2882 |
   +--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+---------------------------------------------------------------------------------------------+---------------------------------------------+----------------+-------------+
   1 row in set

   ```

   当 `JOB_STATUS` 为 `SUCCESS` 时，则说明 Locality 变更任务执行成功。
 6. 修改租户 `mysql001` 的 Locality，减少 zone3 的副本。

   ```shell
   obclient(root@sys)[oceanbase]> ALTER TENANT mysql001 locality="FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone4";

   ```
 7. 查看 Locality 变更任务的执行状态。

   ```

   查询结果如下：

   ```shell
   +--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+------------------------------------------------------------------------------+------------------------------------------------------------+----------------+-------------+
   | JOB_ID | JOB_TYPE              | JOB_STATUS | RESULT_CODE | PROGRESS | START_TIME                 | MODIFY_TIME                | TENANT_ID | SQL_TEXT                                                                     | EXTRA_INFO                                                 | RS_SVR_IP      | RS_SVR_PORT |
   +--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+------------------------------------------------------------------------------+------------------------------------------------------------+----------------+-------------+
   |      1 | ALTER_TENANT_LOCALITY | SUCCESS    |        NULL |        0 | 2023-01-05 19:38:38.416011 | 2023-01-05 19:38:38.416011 |      1002 | ALTER TENANT mysql001 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone4' | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone4 | xx.xx.xx.237   |        2882 |
   +--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+------------------------------------------------------------------------------+------------------------------------------------------------+----------------+-------------+
   1 row in set

   ```

   当 `JOB_STATUS` 为 `SUCCESS` 时，则说明 Locality 变更任务执行成功。
 8. 查看租户 `mysql001` 修改后的 Locality。

   ```shell
   obclient> SELECT TENANT_ID, TENANT_NAME, TENANT_TYPE, PRIMARY_ZONE, LOCALITY FROM oceanbase.DBA_OB_TENANTS;

   ```

   查询结果如下：

   ```shell
   +-----------+-------------+-------------+-------------------+---------------------------------------------+
   | TENANT_ID | TENANT_NAME | TENANT_TYPE | PRIMARY_ZONE      | LOCALITY                                    |
   +-----------+-------------+-------------+-------------------+---------------------------------------------+
   |         1 | sys         | SYS         | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 |
   |      1001 | META$1002   | META        | zone1;zone2       | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone4 |
   |      1002 | mysql001    | USER        | zone1;zone2       | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone4 |
   +-----------+-------------+-------------+-------------------+---------------------------------------------+
   3 rows in set

   ```

   通过步骤 3 与步骤 8 的查询比较，租户 `mysql001` 的 Locality 由原来的 `FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3` 变为 `FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone4`，租户 `mysql001` 在 zone1、zone2、zone4 上分别有一个全能型副本。

在步骤 4 执行过后，增加副本会导致租户 Locality 与租户 Primary Zone 不匹配，如果增加的 Zone 参与切主，则需要修改 Primary Zone，关于修改 Primary Zone 的操作，参见 [调整 Primary Zone](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682939)；如果增加的 Zone 不参与切主，则不需要修改 Primary Zone。

## 相关文档

- [Locality 介绍](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682494)
 - [修改 Locality](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682966)
 - [查看 Locality](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682973)
 - [增加副本](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682969)
 - [减少副本](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682970)
 - [调整 Primary Zone](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682939)

 上一篇 下一篇 ![有帮助](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) 咨询热线
