基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
克隆租户
更新时间:2026-07-23 20:41:25
通过克隆租户操作,您可以基于一个指定的租户克隆出一个新租户。克隆出来的新租户的 Unit 数量,以及 Unit 在各个 OBServer 节点上的分布,均与源租户保持一致。
使用限制
不允许对备租户执行克隆租户的操作。
不允许在 Switchover 过程中执行克隆租户的操作。
有关 Switchover 的相关操作,请参见 Switchover。
不允许在增加 LS、删除 LS 或 LS 属性变化的过程中执行克隆租户的操作。
可以在系统租户(
sys租户)下通过以下语句SELECT * FROM oceanbase.CDB_OB_BALANCE_JOBS WHERE tenant_id = XXX;进行确认。不允许在 Transfer 过程中执行克隆租户的操作。
可以在系统租户(
sys租户)下通过以下语句SELECT * FROM oceanbase.CDB_OB_BALANCE_JOBS WHERE tenant_id = XXX;确认是否有正在进行的 Transfer 任务。不允许在 Unit 迁移过程中执行克隆租户的操作。
可以在系统租户(
sys租户)下通过以下语句SELECT * FROM oceanbase.DBA_OB_UNITS WHERE MIGRATE_FROM_SVR_PORT IS NOT NULL;确认是否有正在进行的 Unit 迁移任务。在通过减少资源池中的
UNIT_NUM个数来对租户进行缩容时,不允许执行克隆租户的操作。当源租户中有 Unit 所在的 OBServer 节点不可用时,不支持执行租户克隆的操作。
不允许在日志流副本有容灾任务时执行克隆租户的操作。
确认当前租户的日志流副本是否有容灾任务的方法如下:
系统租户通过指定当前租户的
tenant_id查询CDB_OB_LS_REPLICA_TASKS视图,如果查询结果为非空,则表示该租户有容灾任务正在执行。用户租户通过查询
DBA_OB_LS_REPLICA_TASKS,如果查询结果为非空,则表示该租户有容灾任务正在执行。
不允许在升级过程中执行克隆租户的操作。
不允许对 OceanBase 数据库 V4.3.0 之前版本的租户执行克隆租户的操作。
注意事项
克隆出来的新租户与源租户之间存在严格的数据隔离和资源隔离。新租户的任何数据改动,均不会影响到源租户,同时源租户的任何数据改动也不会影响到新租户;新租户与源租户之间不会相互抢占 CPU、内存等资源。
对于源租户与克隆出来的新租户,在初始状态下使用的是共享物理宏块,后续随着源租户与新租户各自的数据写入,两个租户的共享宏块逐渐减少,独占宏块逐渐增多,存储空间的占用也会逐步增加,需要及时关注 OBServer 节点上存储空间的占用情况。
租户克隆任务执行过程中,不能进行以下操作:
对源租户执行 Switchover 操作
通过修改源租户的
UNIT_NUM个数或 Primary Zone 第一优先级进行租户扩缩容操作对源租户执行增加副本、减少副本、调整副本分布等操作
对源租户手动执行 Transfer 操作
对源租户手动执行 Unit 迁移操作
对源租户执行升级操作
如果必须执行上述操作,您可以取消克隆任务后再执行,取消克隆任务的详细操作,请参见 取消租户克隆。
前提条件
租户克隆功能依赖于租户的日志归档功能,在执行租户克隆操作前,请确保源租户已开启日志归档模式,并且在租户克隆过程中,源租户不能关闭日志归档模式。为源租户设置归档目的端并开启日志归档模式的详细操作,请参见 日志归档前准备 和 开启归档模式。
注意
为租户开启归档模式后,如果希望立即执行克隆租户的操作,则需要执行 ALTER SYSTEM MINOR FREEZE TENANT = tenant_name; 语句对该租户发起一轮转储。有关手动触发转储的详细操作,请参见 手动触发转储。
背景信息
克隆租户功能适用于较多场景,部分场景如下:
当您需要进行应用程序的版本测试验证时,可以基于在线租户快速克隆出一个测试租户,使用测试租户来进行应用的测试验证。
当您需要对数据库执行 DDL 等相对高风险的操作时,您可以:
基于在线租户快速克隆出一个测试租户,在测试租户上运行一遍需要执行的 DDL 语句,验证运行结果。
在执行 DDL 语句前,基于在线租户克隆出一个当前时间点的小规格租户,如果发现 DDL 语句的执行出现问题,可以快速进行数据回滚。
操作步骤
使用
root用户登录到集群的sys租户。obclient -h172.30.xx.xx -P2883 -uroot@sys#cluster -p**** -A执行以下语句,克隆租户。
CREATE TENANT new_tenant_name FROM source_tenant_name WITH RESOURCE_POOL [=] resource_pool_name, UNIT [=] unit_config;相关参数说明如下:
new_tenant_name:克隆出来的新租户名。每次仅支持克隆一个租户,如果需要克隆多个租户,需要待该克隆任务结束后再克隆新的租户。source_tenant_name:源租户名。resource_pool_name:指定克隆出来的新租户的资源池名称。在进行租户克隆时,系统将会根据源租户的资源分布,为新租户自动创建资源池。unit_config:指定克隆出来的新租户的 Unit 规格。可以根据需要,填写系统中已存在的 Unit 规格,也可以创建新的 Unit 规格。有关查询系统中已存在的 Unit 的详细操作,请参见 查看资源规格。
基于租户
mysql克隆出一个新租户clone_tnt的示例如下:obclient [oceanbase]> CREATE TENANT clone_tnt FROM mysql WITH RESOURCE_POOL = clone_tnt_pool, UNIT= S1_unit_config;本示例中,克隆出来的新租户的资源池为
clone_tnt_pool,Unit 规格为S1_unit_config。克隆出来的租户的 Unit 数量及 Unit 在各个 OBServer 节点上的分布,均与源租户保持一致。克隆任务执行过程中,您可以通过视图查看克隆任务的状态。
查看正在执行的克隆任务
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_CLONE_PROGRESS\G查询结果如下:
*************************** 1. row *************************** CLONE_JOB_ID: 1702211800546509768 TRACE_ID: YA4740B7C050F-00060C210F4A4848-0-0 SOURCE_TENANT_ID: 1004 SOURCE_TENANT_NAME: mysql CLONE_TENANT_ID: 1016 CLONE_TENANT_NAME: clone_tnt TENANT_SNAPSHOT_ID: 1702211800802135214 TENANT_SNAPSHOT_NAME: _inner_snapshot$1702211800702058206 RESOURCE_POOL_ID: 1008 RESOURCE_POOL_NAME: clone_tnt_pool UNIT_CONFIG_NAME: S1_unit_config RESTORE_SCN: 1702211802014048020 STATUS: CLONE_SYS_CREATE_TENANT CLONE_JOB_TYPE: FORK CLONE_START_TIME: 2023-12-10 20:36:40.551169 CLONE_FINISHED_TIME: NULL RET_CODE: NULL ERROR_MESSAGE: NULL 1 row in set查看克隆任务历史
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_CLONE_HISTORY\G查询结果如下:
*************************** 1. row *************************** CLONE_JOB_ID: 1702211800546509768 TRACE_ID: YA4740B7C050F-00060C210F4A4848-0-0 SOURCE_TENANT_ID: 1004 SOURCE_TENANT_NAME: mysql CLONE_TENANT_ID: 1016 CLONE_TENANT_NAME: clone_tnt TENANT_SNAPSHOT_ID: 1702211800802135214 TENANT_SNAPSHOT_NAME: _inner_snapshot$1702211800702058206 RESOURCE_POOL_ID: 1008 RESOURCE_POOL_NAME: clone_tnt_pool UNIT_CONFIG_NAME: S1_unit_config RESTORE_SCN: 1702211802014048020 STATUS: CLONE_SYS_SUCCESS CLONE_JOB_TYPE: FORK CLONE_START_TIME: 2023-12-10 20:36:40.551169 CLONE_FINISHED_TIME: 2023-12-10 20:37:53.919247 RET_CODE: 0 ERROR_MESSAGE: NULL 1 row in set
后续处理
租户克隆任务执行完成后,克隆出来的新租户为备租户。您可以将该新租户继续作为备租户提供相关服务,也可以将新租户转为主租户提供服务。将备租户转为主租户的详细操作,请参见 备租户转为主租户。
对于部署了仲裁服务的场景,默认情况下,克隆出来的租户未开启仲裁服务。如果需要开启仲裁服务,您可以在克隆完成后,为克隆出来的新租户开启仲裁服务,详细操作请参见 为租户开启仲裁服务。