---
title: "减少副本 - OceanBase 数据库 V4.1.0 | OceanBase 文档中心"
description: 减少副本 本文介绍如何通过修改集群中某个租户的 Locality 来减少租户下日志流的副本数。 有关修改 Locality 的详细操作和注意事项，参见 修改 Locality 。 前提条件 变更 Locality 之前，需要确认待变更的 Zone 上资源单元和资源池的状态。如果 Zone 上的 OBServer 资源…
---
切换语言

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

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

# 减少副本

更新时间：2024-03-21 16:26:18

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

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

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

## 前提条件

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

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

## 注意事项

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

  以 `z1,z2,z3` 为例，删除 `z3`，有两种场景：

     1. 租户在 `z3` 上有独立的资源池，例如：租户有 `resource_pool1` 和 `resource_pool2` 两个资源池，其中 `resource_pool2` 位于 `z3`，那么减少副本后，需要将 `resource_pool2` 从租户的资源池列表移除，然后可以选择删除资源池，真正释放资源，删除资源池的详细操作，参见 [删除资源池](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001697250)。
     2. `z3` 上没有独立的资源池，比如：租户的资源池 `resource_pool1` 位于 `z2` 和 `z3`，那么减少副本后，需要调整 `resource_pool1` 的 `zone` 列表，移除 `z3`，真正释放资源，调整资源池 `zone` 列表，参见 [修改资源池属性](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001697245)。

## 操作步骤

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

#### 说明

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

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

   ```shell
   obclient -h172.30.xxx.xxx -P2883 -uroot@sys -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;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 |
   +-----------+-------------+-------------+-------------------+---------------------------------------------+

   ```

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

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

   ```
 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    |           0 |      100 | 2023-01-05 19:33:46.730319 | 2023-01-05 19:33:46.920111 |      1002 | ALTER TENANT mysql001 locality='FULL{1}@zone1, FULL{1}@zone2'                | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | xx.xx.xx.xx |        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                |
   |      1002 | mysql001    | USER        | zone1;zone2       | FULL{1}@zone1, FULL{1}@zone2                |
   +-----------+-------------+-------------+-------------------+---------------------------------------------+

   ```

通过步骤 3 与步骤 6 的查询比较，租户 `mysql001` 的 Locality 由原来的 `FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3` 变为 `FULL{1}@zone1, FULL{1}@zone2`，租户 `mysql001` 的副本数减少。

## 相关文档

- [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-10000000001697416)

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