---
title: "部署与使用列存副本 - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: 部署与使用列存副本 为支持 TP 与 AP 混合负载等场景，OceanBase 数据库支持 列存副本 （COLUMNSTORE，简称 C 副本 ）。C 副本可部署在独立 Zone 上；用户表（含复制表，不含索引表、内部表、系统表）在该副本中以列存格式存储。 本篇文档将介绍列存副本（C 副本）在租户 Locality …
---
切换语言

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

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

# 部署与使用列存副本

更新时间：2026-07-14 15:58:29

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/620.obap/150.obap-deploy/150.uesing-columnstore-replica.md)  

为支持 TP 与 AP 混合负载等场景，OceanBase 数据库支持**列存副本**（COLUMNSTORE，简称 **C 副本**）。C 副本可部署在独立 Zone 上；用户表（含复制表，不含索引表、内部表、系统表）在该副本中以列存格式存储。

本篇文档将介绍列存副本（C 副本）在租户 **Locality** 中完成部署的步骤，并介绍如何使用 C 副本。

#### 说明

访问 C 副本依赖**独立 ODP（ODP V4.3.2+）**与**弱读 + 列存路由**配置。版本基线与架构选型见 [典型 AP 架构部署指南](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012871) 文首说明。

### 使用限制与注意事项

- **使用限制**

     - C 副本与 **F** 或 **R** 副本 **不支持** 互相转换。
     - **物理恢复** 不支持恢复 C 副本；租户的 Locality 若包含 C 副本，恢复将失败。
 - **部署建议**

     - 从 V4.3.5 BP1 起支持部署多个 C 副本，建议最多 **3** 个。
     - C 副本所在 Zone **要求只部署 C 副本**；访问 C 副本的独立 ODP 需 **ODP V4.3.2 及以上**。
     - 主库未部署 C 副本时，**备库不建议** 部署 C 副本。
 - **运维注意事项**

     - 在部署 C 副本的集群中执行 DDL 操作时，系统资源消耗通常会有所增加。其主要原因是系统在处理行存数据的同时，还需要额外处理列存数据，且提交日志（clog）也需同步写入对应副本，因此会对 CPU、内存、磁盘和 I/O 等资源带来更高压力。
     - C 副本 **合并** 通常慢于 F/R；**上一轮合并未完成时，无法发起新一轮租户级合并**。手动合并前建议查看 [CDB_OB_ZONE_MAJOR_COMPACTION](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002014719)、[DBA_OB_ZONE_MAJOR_COMPACTION](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002015351)，详见 [查看合并信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013690)。

## 部署列存副本

在租户 **Locality** 中指定 C 副本即可，常见两类操作：

- **场景 A**：新建租户时即包含 C 副本。
 - **场景 B**：为已有租户增加 C 副本（新 Zone + 调整 Locality）。

以下 SQL 示例中的 CPU、内存、磁盘等数值仅为示例参考，请按实际负载与资源规划调整。

### 场景 A：新建包含 C 副本的租户

假设当前有一个已部署好的集群，且集群的部署模式为 2F1A（两副本 + 1 个仲裁服务）。集群中的 3 个 Zone 分别为 zone1、zone2、zone3，仲裁服务部署在 zone3 上。需要在该集群上创建一个含有 C 副本的租户，步骤如下：

#### 说明

**C 副本不能替代仲裁（A）**。在 3 Zone 场景下，可直接配置 `F@zone1,F@zone2,C@zone3`，不要求必须新增第 4 个 Zone。

1. 找到一台能够与当前集群网络互通的机器，并在该机器上部署 **专用于访问 C 副本** 的 ODP（部署与版本要求见上节）。

   独立 ODP 可部署在任意与集群网络互通的主机上，并非必须使用独占物理服务器。为防止资源争抢，建议 ODP 单独部署在一台机器上。部署 ODP 时，要求其版本必须为 ODP V4.3.2 及以上版本。有关部署 ODP 的详细操作，参见 [部署 ODP](https://www.oceanbase.com/docs/common-odp-doc-cn-1000000001600960)。
 2. 为租户创建资源单元 `unit1`。

   ```sql
   CREATE RESOURCE UNIT unit1,
       MAX_CPU=5,
       MIN_CPU=5,
       MEMORY_SIZE= '32G',
       MAX_IOPS=10000,
       MIN_IOPS=5000,
       LOG_DISK_SIZE=5301023539200;

   ```
 3. 为租户创建资源池 `pool1`，指定资源单元为 `unit1`。

   ```sql
   CREATE RESOURCE POOL pool1
       UNIT='unit1',
       UNIT_NUM = 1,
       ZONE_LIST = ('zone1','zone2','zone3');

   ```
 4. 创建一个租户 `tenant_c`，指定其 Locality 为 `F@zone1,F@zone2,C@zone3`。

   ```sql
   CREATE TENANT tenant_c
       LOCALITY = 'F@zone1,F@zone2,C@zone3',
       PRIMARY_ZONE='zone1;zone2,zone3',
       RESOURCE_POOL_LIST=('pool1') SET ob_tcp_invited_nodes = '%';

   ```

   本示例中，创建的租户默认为 MySQL 兼容模式租户，如果需要创建 Oracle 兼容模式租户，需要通过系统变量 [ob_compatibility_mode](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002015902) 显式指定 `ob_compatibility_mode='oracle'`。

### 场景 B：为已有租户增加 C 副本

假设当前集群中有一个名为 `tenant_c` 的租户，其 Locality 为 `F@zone1,F@zone2,F@zone3`，租户的资源池为 `pool1`，其 `ZONE_LIST` 范围为 `'zone1','zone2','zone3'`。现在需要为租户增加 C 副本，可以增加 **zone4**，然后修改租户的 Locality 为 `F@zone1,F@zone2,F@zone3,C@zone4`，步骤如下：

#### 说明

新增第 4 个 Zone 仅适用于希望将 C 副本放在独立 Zone 的场景；不是部署 C 副本的前置条件。若 3 Zone 拓扑已满足隔离诉求，可直接在现有 Zone 上配置 C 副本（如 `F@zone1,F@zone2,C@zone3`）。

1. 在集群中添加新的 Zone **zone4**。添加 Zone 的详细操作，参见 [添加 Zone](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013108)。
 2. 向 **zone4** 内增加节点。添加节点的详细操作，参见 [添加节点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013119)。
 3. 创建资源单元 `unit2`。

   ```sql
   CREATE RESOURCE UNIT unit2,
       MAX_CPU=5,
       MIN_CPU=5,
       MEMORY_SIZE= '32G',
       MAX_IOPS=10000,
       MIN_IOPS=5000,
       LOG_DISK_SIZE=5301023539200;

   ```
 4. 创建资源池 `pool2`，指定资源单元为 `unit2`。

   ```sql
   CREATE RESOURCE POOL pool2
       UNIT = 'unit2',
       UNIT_NUM = 1,
       ZONE_LIST = ('zone4');

   ```
 5. 为租户增加资源池 `pool2`。

   ```sql
   ALTER TENANT tenant_c RESOURCE_POOL_LIST = ('pool1','pool2');

   ```

   #### 注意

   `RESOURCE_POOL_LIST` 是**整表替换**语义：需要同时写出已有资源池与新增资源池。若只写 `('pool2')`，会将原有资源池解绑。
 6. 修改租户的 Locality 为 `F@zone1,F@zone2,F@zone3,C@zone4`。

   ```sql
   ALTER TENANT tenant_c LOCALITY = 'F@zone1,F@zone2,F@zone3,C@zone4';

   ```

## 使用列存副本

### 通过独立 ODP 访问 C 副本

访问 C 副本时，需要 **单独部署一套 ODP（ODP V4.3.2+）**，业务经该 ODP 将请求发送到 C 副本：在其上配置弱读、路由与 `init_sql`（常见 `ob_route_policy = COLUMN_STORE_ONLY` 等），完整示例见下文。

多机房场景下，若同时需要机房亲和路由（LDC）与列存路由，请将其视为两个独立配置维度；相关通用问答见 [AP FAQ](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003209564)。

#### 部署 ODP

在可与集群互通的机器上部署 **专用于访问 C 副本** 的 ODP，版本 **不低于 ODP V4.3.2**。步骤见 [部署 ODP](https://www.oceanbase.com/docs/common-odp-doc-cn-1000000001600960)。

#### 配置路由转发策略及弱读

使用 `root@proxysys` 登录该 ODP，例如：

```shell
obclient -uroot@proxysys -h10.10.10.1 -P2883 -p

```

**常用配置项说明**

下表列出了与列存弱读访问相关的常用 ODP 配置项。

| 配置项 | 说明 |
| --- | --- |
| `obproxy_read_only` | 是否仅转发只读请求等代理只读模式相关行为；与弱读、路由配合使用时请按实际 ODP 版本说明设置。 |
| `obproxy_read_consistency` | 读一致性级别；示例中 `= 1` 常表示**弱一致性读**（以当前 ODP 文档为准），便于配合路由到从副本/C 副本。 |
| `proxy_primary_zone_name` | 将请求优先路由到指定 **Zone**（常用于已知 C 副本所在 Zone、希望弱读流量按 Zone 收敛）。 |
| `init_sql` | 连接建立后自动执行的 SQL；常用 `set @@ob_route_policy = COLUMN_STORE_ONLY` 使优化器生成列存路径。 |
| `route_target_replica_type` | 按**副本类型**路由，例如 `ColumnStore` 表示选择列存副本（不依赖写死 Zone 名）。 |
| `proxy_route_policy` | 路由策略枚举；例如 `TARGET_REPLICA_TYPE_FOLLOWER_ONLY` 表示弱读时仅选从副本类路由，从副本不可用时断开连接等（以 ODP 说明为准）。 |

**场景组合**

| 组合 | 适用场景 | `proxy_primary_zone_name` | `route_target_replica_type` | `init_sql` | `proxy_route_policy`（可选） |
| --- | --- | --- | --- | --- | --- |
| **组合一** | 已明确 C 副本所在 **Zone**，希望弱读按 Zone 收敛 | 设为 C 副本所在 Zone，例如 `'zone4'` | 不依赖（可保持默认） | `set @@ob_route_policy = COLUMN_STORE_ONLY` | 按需，见下方「组合二」可选段 |
| **组合二** | 更希望按**副本类型**选列存，而不绑定固定 Zone 名 | 可不设置或按需 | `'ColumnStore'` | `set @@ob_route_policy = COLUMN_STORE_ONLY` | 若需「仅从副本、不可用则断连」等，可设 `TARGET_REPLICA_TYPE_FOLLOWER_ONLY`（见下） |

**组合一：执行示例（弱读 + 按 Zone 指向 C 副本）**

```shell
-- 配置只读与弱读相关项
obclient> ALTER PROXYCONFIG SET obproxy_read_only = 0;
obclient> ALTER PROXYCONFIG SET obproxy_read_consistency = 1;
-- 配置弱读情况下，ODP 所有请求仅路由到 C 副本所在的 Zone，同时生成 C 副本的查询计划。例如， C 副本所在的 Zone 为 zone4。
obclient> ALTER PROXYCONFIG SET proxy_primary_zone_name='zone4';
obclient> ALTER PROXYCONFIG SET init_sql='set @@ob_route_policy = COLUMN_STORE_ONLY';

```

**组合二：执行示例（弱读 + 按副本类型 ColumnStore）**

```shell
-- 配置只读与弱读相关项
obclient> ALTER PROXYCONFIG SET obproxy_read_only = 0;
obclient> ALTER PROXYCONFIG SET obproxy_read_consistency = 1;
-- 配置弱读情况下，所有请求仅路由到 C 副本，同时生成 C 副本的查询计划：
obclient> ALTER PROXYCONFIG SET route_target_replica_type = 'ColumnStore';
-- 配置弱读情况下，所有请求仅选择从副本，当从副本都不可用时，断开和客户端的连接：
obclient> ALTER PROXYCONFIG SET init_sql='set @@ob_route_policy = COLUMN_STORE_ONLY';

```

修改成功后，可用以下语句核对：

```shell
obclient> SHOW PROXYCONFIG ALL LIKE 'obproxy_read_only';
obclient> SHOW PROXYCONFIG ALL LIKE 'obproxy_read_consistency';
obclient> SHOW PROXYCONFIG ALL LIKE 'proxy_primary_zone_name';
obclient> SHOW PROXYCONFIG ALL LIKE 'init_sql';
obclient> SHOW PROXYCONFIG ALL LIKE 'route_target_replica_type';
obclient> SHOW PROXYCONFIG ALL LIKE 'proxy_route_policy';

```

配置成功后，OLAP 业务通过该 **独立 ODP** 接入，将查询定向到 C 副本。

## 相关文档

- [列存副本](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016746)
 - [典型 AP 架构部署指南](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012871)
 - [列存 FAQ](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012738)

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