首批通过分布式安全可靠测评,为关键业务系统打造
添加资源池报错,错误代码 4657
更新时间:2026-06-10 01:56
本文介绍将资源池添加到租户失败报 4657 错误的处理方法。
适用版本
适用于 OceanBase 数据库所有版本。
问题现象
执行以下 SQL 语句,将资源池 pool2 添加到 test 租户的资源池列表中。
obclient> ALTER TENANT test resource_pool_list=('pool1','pool2');
提示错误,信息如下。
ERROR 4657 (HY000): resource pool list ["pool2"] unit servers intersect
日志信息如下。
WARN grant_pools (ob_unit_manager.cpp:1906) [38804][YB426451999C-0005A145B26BB26A] [lt=13] resource pool list ["pool2"] unit servers intersect, ret=-4657
WARN [RS] grant_pools (ob_unit_manager.cpp:1907) [38804][YB426451999C-0005A145B26BB26A] [lt=21] resource pool unit server intersect(pool_names=["pool2"], ret=-4657)
可能原因
根据错误信息,判断是由于资源池存在交集引起的。
OceanBase 数据库中,一个租户在同一台 OBServer 上最多拥有一个资源单元(Unit)。故出现上述问题可能是由于资源池 pool1 与 pool2 存在交集,这种情况下,不允许修改租户的资源池列表。
例如,pool1 的 zone_list 为 ('zone1'),pool2 的 zone_list 为 ('zone1','zone2'),即表示 pool1 资源池与 pool2 资源池存在交集。
解决方法
根据要完成的任务不同,有以下两种解决方法。
若要进行缩容或扩容,可以修改资源池对应的资源池单元规格。
例如,要修改 test 租户的容量,test 租户的资源池为 pool1,资源池 pool1 的资源单元为 unit1,则可以直接修改资源单元 unit1 的规格。
obclient> ALTER RESOURCE UNIT unit1 max_cpu 15, max_memory '20G', max_iops 128,max_disk_size '100G', max_session_num 64, MIN_CPU=10, MIN_MEMORY='10G', MIN_IOPS=128;若要修改租户的 Locality,例如将 3 副本修改为 5 副本,则需保证使用的资源池没有交集。
可以通过以下语句查看资源池配置。
obclient> SELECT t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, round(t2.max_memory/1024/1024/1024) max_mem_gb, round(t2.min_memory/1024/1024/1024) min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name FROM __all_resource_pool t1 join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id) JOIN __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`) LEFT JOIN __all_tenant t4 on (t1.tenant_id=t4.tenant_id) ORDER BY t1.`resource_pool_id`,t2.`unit_config_id` , t3.unit_id;