---
title: "增加副本 - OceanBase 数据库 V4.1.0 | OceanBase 文档中心"
description: 增加副本 本文介绍如何通过修改集群中某个租户的 Locality 来增加租户下日志流的副本数。 有关修改 Locality 的详细操作和注意事项，参见 修改 Locality 。 前提条件 增加副本之前，首先需要确认租户在目标 Zone 上是否有资源池，如果没有，则需要调整现有资源池的 Zone 列表，或者新增一个资…
---
切换语言

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

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

# 增加副本

更新时间：2025-12-30 11:03:58

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

本文介绍如何通过修改集群中某个租户的 Locality 来增加租户下日志流的副本数。

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

## 前提条件

增加副本之前，首先需要确认租户在目标 Zone 上是否有资源池，如果没有，则需要调整现有资源池的 Zone 列表，或者新增一个资源池给租户，如果新增资源池，要求资源池的 Unit 个数与租户已有的资源池一致，调整资源池或新增资源池的详细操作，参见 [修改资源池属性](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001697245) 或 [创建资源池](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001692881)。

同时还需要确认待变更的 Zone 上资源单元和资源池的状态。如果 Zone 上的节点资源不足导致无法存放租户需要的资源单元，将导致无法进行 Locality 变更。

有关 Zone 上资源单元和资源池的状态的检查方法，参见 [查看集群的资源信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001701028)。

## 注意事项

- 租户的 Locality 不可以为空。
 - 当租户的 Locality 发生变更时，在该租户下，所有表的副本分布情况也会随之变化。
 - 在旧一轮租户 Locality 没有完成变更时，新一轮的租户 Locality 变更不允许被执行。
 - Locality 变更一次只能执行一个动作，例如把 Zone3 替换为 Zone4，不能直接替换，可以先增加一个 Zone4，然后再减少一个 Zone3。
 - 修改 Locality 时需要关注对 Primary Zone 的影响，建议提前调整 Primary Zone。

  例如：

     1. 需要减少 zone3，如果 zone3 属于第一优先级的 Primary Zone，则调整 Locality 过程会影响租户读写服务。
     2. 增加 zone4 时，如果 Primary Zone 为 RANDOM，那么后续 zone4 也会提供读写服务。

## 操作步骤

示例：通过修改租户 `mysql001` 的 Locality，由 `FULL{1}@zone1, FULL{1}@zone2` 修改为 `FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3`，在 zone3 上为租户新增副本。

#### 说明

此处仅以添加 1 个 Zone 为示例，实际操作中注意添加的 Zone 的数量需要能够满足多数派原则。

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

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

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

   ```shell
   obclient>use oceanbase;

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

   ```shell
   obclient> SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,LOCALITY FROM oceanbase.DBA_OB_TENANTS;
   +-----------+-------------+-------------+-------------------+---------------------------------------------+
   | 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                |
   |      1002 | mysql001    | USER        | zone1;zone2       | FULL{1}@zone1, FULL{1}@zone2                |
   +-----------+-------------+-------------+-------------------+---------------------------------------------+

   ```

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

   ```shell
   obclient>ALTER TENANT mysql001 locality="FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3";

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

   ```shell
    obclient>SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE = 'ALTER_TENANT_LOCALITY';
    +--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+------------------------------------------------------------------------------+---------------------------------------------+----------------+-------------+
    | 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}@zone1, FULL{1}@zone2                | xx.xx.xx.237 |        2882 |
    +--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+------------------------------------------------------------------------------+---------------------------------------------+----------------+-------------+

   ```

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

   ```shell
   obclient> SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,LOCALITY FROM oceanbase.DBA_OB_TENANTS;
   +-----------+-------------+-------------+-------------------+---------------------------------------------+
   | 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}@zone3 |
   |      1002 | mysql001    | USER        | zone1;zone2       | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 |
   +-----------+-------------+-------------+-------------------+---------------------------------------------+

   ```

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

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

## 相关文档

- [Locality 介绍](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001697243)
 - [修改 Locality](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001698976)
 - [查看 Locality](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001698975)
 - [减少副本](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001697417)

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