---
title: "使用列存副本 - OceanBase 数据库 V4.3.3 | OceanBase 文档中心"
description: 使用列存副本 为满足对 TP 增强混合负载（准实时决策分析）场景的支持，OceanBase 数据库提供了对列存副本的支持。用户可以将列存副本部署在独立的 Zone 上。在列存副本上，所有的用户表（包括复制表、不包括索引表、内部表、系统表）均为列存格式存储。OLAP 业务通过独立的 proxy 入口访问列存副本，并以弱…
---
切换语言

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

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

# 使用列存副本

更新时间：2026-04-10 12:01:00

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.3/zh-CN/600.manage/300.replica-management/150.the-use-of-columnstore-replica.md)  

为满足对 TP 增强混合负载（准实时决策分析）场景的支持，OceanBase 数据库提供了对列存副本的支持。用户可以将列存副本部署在独立的 Zone 上。在列存副本上，所有的用户表（包括复制表、不包括索引表、内部表、系统表）均为列存格式存储。OLAP 业务通过独立的 proxy 入口访问列存副本，并以弱读方式执行决策分析类业务。

本文主要介绍如何在 OceanBase 集群中部署并配置 ODP，以访问列存副本。

#### 注意

列存副本目前处于实验阶段，不推荐在生产环境中使用，以免影响系统稳定性。

## 注意事项

在使用列存副本时，需要注意以下事项：

- 不建议部署 2 个及以上数目的列存副本。
 - 列存副本与 F 或 R 副本之间不支持相互转换。
 - 由于访问列存副本需要部署独立的 ODP，建议对存在列存副本的 Zone 上只部署列存副本。同时，部署 ODP 时，要求其版本必须为 ODP V4.3.2 及以上版本。
 - 全功能型副本/只读型副本上的查询不允许转发到列存副本。反之，列存副本上的用户表查询也不允许转发到全功能型副本/只读型副本，否则会报错。
 - 部署了列存副本的集群，在执行 DDL 操作时，会对 CPU、内存、磁盘以及 IO 等资源的使用产生影响。
 - 列存副本的合并比全功能型副本/只读型副本的合并慢。如果列存副本未合并完成，将无法发起新一轮的租户级合并。手动触发合并前，建议通过查看 [CDB_OB_ZONE_MAJOR_COMPACTION](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001430362) 或 [DBA_OB_ZONE_MAJOR_COMPACTION](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001430943) 视图来确认上一轮所有副本是否都已完成合并。

  有关查看合并情况的详细操作，参见 [查看合并信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001429549)。
 - 物理恢复不支持恢复列存副本，指定租户的 Locality 时，如果指定了列存副本，恢复操作将会执行失败。
 - 如果主库未部署列存副本，备库也不建议部署列存副本。

## 步骤一：部署列存副本

要在集群中部署列存副本，只需要在租户的 Locality 中指定列存副本即可。主要有以下两种场景：

- 创建租户时指定列存副本
 - 通过修改租户的 Locality 来增加列存副本

### 创建租户时指定列存副本

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

1. 找到一台能够与当前集群网络互通的机器，并在该机器上部署 ODP。

   为防止资源争抢，建议 ODP 单独部署在一台机器上。部署 ODP 时，要求其版本必须为 ODP V4.3.2 及以上版本。有关部署 ODP 的详细操作，参见 [部署 ODP](https://www.oceanbase.com/docs/common-odp-doc-cn-1000000001600960)。
 2. 为租户创建资源单元 `unit1`。

   ```shell
   obclient [oceanbase]> 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`。

   ```shell
   obclient [oceanbase]> CREATE RESOURCE POOL pool1 UNIT='unit1', UNIT_NUM = 1, ZONE_LIST = ('zone1','zone2','zone3');

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

   ```shell
   obclient [oceanbase]> 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-1000000001431505) 显式指定 `ob_compatibility_mode='oracle'`。

### 通过修改租户的 Locality 来增加列存副本

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

1. 在集群中添加新的 Zone `zone4`。添加 Zone 的详细操作，参见 [添加 Zone](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001428958)。
 2. 向 `zone4` 内增加节点。添加节点的详细操作，参见 [添加节点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001428969)。
 3. 找到一台能够与当前集群网络互通的机器，并在该机器上部署 ODP。

   为防止资源争抢，建议 ODP 单独部署在一台机器上。部署 ODP 时，要求其版本必须为 ODP V4.3.2 及以上版本。有关部署 ODP 的详细操作，参见 [部署 ODP](https://www.oceanbase.com/docs/common-odp-doc-cn-1000000001600960)。
 4. 创建资源单元 `unit2`。

   ```shell
   obclient [oceanbase]> CREATE RESOURCE UNIT unit2, MAX_CPU=5, MIN_CPU=5, MEMORY_SIZE= '32G', MAX_IOPS=10000, MIN_IOPS=5000, LOG_DISK_SIZE=5301023539200;

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

   ```shell
   obclient [oceanbase]> CREATE RESOURCE POOL pool2 UNIT = 'unit2', UNIT_NUM = 1, ZONE_LIST = ('zone4');

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

   ```shell
   obclient [oceanbase]> ALTER TENANT tenant_c RESOURCE_POOL_LIST = ('pool1','pool2');

   ```
 7. 修改租户的 Locality 为 `F@zone1,F@zone2,F@zone3,C@zone4`。

   ```shell
   obclient [oceanbase]> ALTER TENANT tenant_c LOCALITY = 'F@zone1,F@zone2,F@zone3,C@zone4';

   ```

## 步骤二：配置路由转发策略及弱读请求

部署列存副本后，需要配置路由转发策略及弱读请求，以保证 OLAP 请求可以自动转为弱读请求并转发到相应的列存副本上。

1. 使用 `root@proxysys` 用户登录到用于访问列存副本的 ODP。

   连接示例如下：

   ```shell
   [admin@obtest ~]$ obclient -uroot@proxysys -h10.10.10.1 -P2883 -p

   ```
 2. 执行以下语句，配置路由转发策略及弱读请求。

   支持以下两种配置项组合，选择任意一种进行设置即可。

      - 第一种

            - 配置 SQL 请求为只读类型。

             ```shell
             obclient> ALTER PROXYCONFIG SET obproxy_read_only = 0;

             ```
            - 配置 SQL 请求为弱一致性读。

             ```shell
             obclient> ALTER PROXYCONFIG SET obproxy_read_consistency = 1;

             ```
            - 配置弱读情况下，ODP 所有请求仅路由到列存副本所在的 Zone，同时生成列存副本的查询计划。

             例如，列存副本所在的 Zone 为 `zone4`。

             ```shell
             obclient> ALTER PROXYCONFIG SET proxy_primary_zone_name='zone4';

             ```

             ```shell
             obclient> ALTER PROXYCONFIG SET init_sql='set @@ob_route_policy = COLUMN_STORE_ONLY';

             ```
      - 第二种

             ```
            - 配置弱读情况下，所有请求仅路由到列存副本，同时生成列存副本的查询计划。

             ```shell
             obclient> ALTER PROXYCONFIG SET route_target_replica_type = 'ColumnStore';

             ```

             ```
            - 配置弱读情况下，所有请求仅选择从副本，当从副本都不可用时，断开和客户端的连接。

             ```shell
             obclient> ALTER PROXYCONFIG SET proxy_route_policy='TARGET_REPLICA_TYPE_FOLLOWER_ONLY';

             ```
 3. 修改成功后，通过以下语句，确认修改结果。

   ```shell
   obclient> SHOW PROXYCONFIG ALL LIKE 'obproxy_read_only';

   ```

   ```shell
   obclient> SHOW PROXYCONFIG ALL LIKE 'obproxy_read_consistency';

   ```

   ```shell
   obclient> SHOW PROXYCONFIG ALL LIKE 'proxy_primary_zone_name';

   ```

   ```shell
   obclient> SHOW PROXYCONFIG ALL LIKE 'init_sql';

   ```

   ```shell
   obclient> SHOW PROXYCONFIG ALL LIKE 'route_target_replica_type';

   ```

   ```shell
   obclient> SHOW PROXYCONFIG ALL LIKE 'proxy_route_policy';

   ```

配置成功后，对于 OLAP 业务，用户可以通过该独立的 ODP 将查询请求定向到列存副本，利用列存批量处理的优势加速查询，且不影响原有的 OLTP 业务。

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