创建新租户时,执行CREATE RESOURCE POOL报异常ERROR 1210 (HY000): Invalid argument

【 使用环境 】测试环境
【 OB or 其他组件 】
OB

【 使用版本 】
4.2.5

【问题描述】清晰明确描述问题
为了使用Binlog,需要创建一个新的租户
创建新租户时,执行CREATE RESOURCE POOL报异常ERROR 1210 (HY000): Invalid argument

CREATE RESOURCE UNIT unit2
MEMORY_SIZE = ‘1G’,
MAX_CPU = 1, MIN_CPU = 1,
LOG_DISK_SIZE = ‘2G’,
MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;

CREATE RESOURCE POOL mq_pool1
UNIT=‘unit2’,
UNIT_NUM=1,
ZONE_LIST=(‘zone1’);

【复现路径】问题出现前后相关操作

【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

根因分析场景: DDL失败
根因分析命令: obdiag rca run --scene=ddl_failure
日志采集场景: 未能明确问题的场景
日志采集命令: obdiag gather scene run --scene=observer.unknown

推荐使用 obdiag 工具进行根因分析和日志采集,以便确认问题所在。上述命令将帮助您收集创建资源池时可能涉及的相关日志信息,并对DDL失败的原因进行分析。

请您执行上述命令后,将生成的日志压缩包提供给我们,以便进一步确认问题。此外,为了更好地帮助您解决问题,请您提供以下信息:

  1. 创建资源池的具体SQL语句是什么?
  2. 是否在执行该语句之前进行了其他操作或配置更改?
  3. 测试环境中是否存在类似的资源池或其他相关对象?
  4. 是否可以提供完整的错误堆栈信息或更详细的上下文描述?
  5. 当前OceanBase集群的部署模式(如OCP、OBD或手工部署)是什么?

附上敏捷诊断工具 obdiag 使用帮助链接

2 个赞

图中不是显示你创建成功了么

2 个赞

当前使用的ob版本是多少。RESOURCE POOL创建失败,看看是否资源足够

1 个赞

OB是4.2.5

执行SQL CREATE RESOURCE POOL 报错 ERROR 1210 (HY000): Invalid argument

CREATE RESOURCE POOL mq_pool1
UNIT=‘unit2’,
UNIT_NUM=1,
ZONE_LIST=(‘zone1’);

observer.log日志

[2025-03-28 11:15:08.705113] WDIAG [SHARE] init (ob_rpc_struct.cpp:10749) [16499][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=1][errcode=-4002] invalid server or resource_info(ret=-4002, ret="OB_INVALID_ARGUMENT", server="127.0.0.1:2882", resource_info={cpu_capacity:16, cpu_assigned:3, cpu_assigned_max:3, mem_capacity:"5GB", mem_assigned:"1GB", mem_in_use:0GB, log_disk_capacity:14GB, log_disk_assigned:2GB, data_disk_capacity:-2GB, data_disk_in_use:0.06640625GB})
[2025-03-28 11:15:08.705176] WDIAG [SERVER] get_server_resource_info (ob_service.cpp:1645) [16499][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=61][errcode=-4002] fail to init result(ret=-4002, ret="OB_INVALID_ARGUMENT", my_addr="127.0.0.1:2882", resource_info={cpu_capacity:16, cpu_assigned:3, cpu_assigned_max:3, mem_capacity:"5GB", mem_assigned:"1GB", mem_in_use:0GB, log_disk_capacity:14GB, log_disk_assigned:2GB, data_disk_capacity:-2GB, data_disk_in_use:0.06640625GB})
[2025-03-28 11:15:08.705194] INFO  [SERVER] get_server_resource_info (ob_service.cpp:1647) [16499][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=17] get server resource info(ret=-4002, ret="OB_INVALID_ARGUMENT", arg={rs_addr:"127.0.0.1:2882"}, result={server:"0.0.0.0:0", resource_info:{cpu_capacity:0, cpu_assigned:0, cpu_assigned_max:0, mem_capacity:"0GB", mem_assigned:"0GB", mem_in_use:0GB, log_disk_capacity:0GB, log_disk_assigned:0GB, data_disk_capacity:0GB, data_disk_in_use:0GB}})
[2025-03-28 11:15:08.705226] WDIAG [SERVER] process (ob_rpc_processor_simple.cpp:2849) [16499][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=31][errcode=-4002] fail to call get_server_resource_info in ob service(ret=-4002, ret="OB_INVALID_ARGUMENT", arg_={rs_addr:"127.0.0.1:2882"})
[2025-03-28 11:15:08.706314] WDIAG [RPC] send (ob_poc_rpc_proxy.h:175) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=21][errcode=-4002] execute rpc fail(addr="127.0.0.1:2882", pcode=532, ret=-4002, timeout=999999784)
[2025-03-28 11:15:08.706357] WDIAG log_user_error_and_warn (ob_poc_rpc_proxy.cpp:248) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=40][errcode=-4002] 
[2025-03-28 11:15:08.706377] WDIAG [SQL.ENG] execute (ob_resource_executor.cpp:47) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=9][errcode=-4002] rpc proxy create resource_pool failed(ret=-4002)
[2025-03-28 11:15:08.706481] INFO  [SHARE] add_event (ob_event_history_table_operator.h:266) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=19] event table add task(ret=0, event_table_name="__all_server_event_history", sql=INSERT INTO __all_server_event_history (gmt_create, module, event, name1, value1, name2, value2, name3, value3, name4, value4, value5, value6, svr_ip, svr_port) VALUES (usec_to_time(1743131708706399), 'sql', 'execute_cmd', 'cmd_type', 13, 'sql_text', X'435245415445205245534F5552434520504F4F4C206D715F706F6F6C310A20202020202020202020202020202020554E49543D27756E697432272C200A20202020202020202020202020202020554E49545F4E554D3D312C200A202020202020202020202020202020205A4F4E455F4C4953543D28277A6F6E65312729', 'return_code', -4002, 'tenant_id', 1, '', '', '127.0.0.1', 2882))
[2025-03-28 11:15:08.706511] WDIAG [SQL] open_cmd (ob_result_set.cpp:101) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=21][errcode=-4002] execute cmd failed(ret=-4002)
[2025-03-28 11:15:08.706528] WDIAG [SQL] open (ob_result_set.cpp:160) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=16][errcode=-4002] execute plan failed(ret=-4002)
[2025-03-28 11:15:08.706559] WDIAG [SERVER] response_result (ob_sync_cmd_driver.cpp:143) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=22][errcode=-4002] close result set fail(cret=-4002)
[2025-03-28 11:15:08.706580] WDIAG [SERVER] after_func (ob_query_retry_ctrl.cpp:1045) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=18][errcode=-4002] [RETRY] check if need retry(v={force_local_retry:false, stmt_retry_times:0, local_retry_times:0, err_:-4002, err_:"OB_INVALID_ARGUMENT", retry_type:0, client_ret:-4002}, need_retry=false)
[2025-03-28 11:15:08.706603] WDIAG [SERVER] response_result (ob_sync_cmd_driver.cpp:149) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=22][errcode=-4002] result set open failed, check if need retry(ret=-4002, cli_ret=-4002, retry_ctrl_.need_retry()=0)
[2025-03-28 11:15:08.706627] INFO  [SERVER] send_error_packet (obmp_packet_sender.cpp:383) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=15] sending error packet(ob_error=-4002, client error=1210, extra_err_info=NULL, lbt()="0x1774d75f 0xc672310 0xc611f2f 0x628e593 0x5d2d64a 0x5d1f042 0x5d1690d 0x5d0395e 0xc54adb9 0x1784798e 0x7f7442168ea5 0x7f7441e91b0d")
[2025-03-28 11:15:08.706666] WDIAG [SERVER] do_process (obmp_query.cpp:1166) [16498][T1_L0_G0][T1][YB427F000001-000631354883060D-0-0] [lt=17][errcode=-4002] execute query fail(ret=-4002, timeout_timestamp=1743132708694929)

当前资源

1 个赞

根据您提供的信息,CREATE RESOURCE POOL 报错 ERROR 1210 (HY000): Invalid argument 的问题可能与以下原因相关:


问题分析

  1. 资源池依赖的 Resource Unit 未正确创建或配置错误

    • 您在创建 RESOURCE POOL 时引用了名为 unit2RESOURCE UNIT。如果该 RESOURCE UNIT 的配置不符合 OceanBase 的要求(例如参数值超出范围或不合法),则会导致报错。
    • 根据日志中的提示:
      invalid server or resource_info(ret=-4002, ret="OB_INVALID_ARGUMENT", server="127.0.0.1:2882", resource_info={cpu_capacity:16, cpu_assigned:3, cpu_assigned_max:3, mem_capacity:"5GB", mem_assigned:"1GB", mem_in_use:0GB, log_disk_size_capacity:14GB, log_disk_size_assigned:2GB, data_disk_capacity:-2GB, data_disk_in_use:0.06640625GB})
      
      可以看到 data_disk_capacity 被设置为 -2GB,这是一个非法值。这可能是由于 unit2 的配置中某些参数不合理导致的。
  2. Zone 配置问题

    • CREATE RESOURCE POOL 语句中,您指定了 ZONE_LIST=('zone1')。如果 zone1 不存在或未正确配置,也可能导致报错。
    • 请确认当前集群中是否存在名为 zone1 的 Zone,并确保其状态正常。
  3. Cluster 或 Server 资源不足

    • 日志中提到 invalid server or resource_info,这可能意味着当前集群的服务器资源不足以支持新创建的资源池。
    • 您可以检查当前集群的资源使用情况,确保有足够的 CPU、内存和磁盘空间来满足 unit2 的需求。

解决步骤

1. 检查 Resource Unit 配置

  • 确认 unit2 是否已正确创建。您可以运行以下查询来检查:
    SELECT * FROM DBA_OB_UNIT_CONFIGS WHERE UNIT_CONFIG_NAME = 'unit2';
    
  • 如果 unit2 存在但配置有问题,请重新创建一个合法的 RESOURCE UNIT。例如:
    CREATE RESOURCE UNIT unit2_new
        MEMORY_SIZE = '1G',
        MAX_CPU = 1,
        MIN_CPU = 1,
        LOG_DISK_SIZE = '2G',
        MAX_IOPS = 10000,
        MIN_IOPS = 10000,
        IOPS_WEIGHT = 1;
    
  • 确保所有参数值符合 OceanBase 的要求(例如 MEMORY_SIZELOG_DISK_SIZE 必须为正数)。

2. 检查 Zone 配置

  • 确认 zone1 是否存在并可用:
    SELECT * FROM DBA_OB_ZONES WHERE ZONE = 'zone1';
    
  • 如果 zone1 不存在或不可用,请根据实际需求创建或调整 Zone 配置。

3. 检查 Cluster 资源

  • 查询当前集群的资源使用情况:
    SELECT * FROM GV$OB_SERVERS;
    SELECT * FROM GV$OB_PARAMETERS WHERE NAME LIKE '%memory%';
    
  • 确保集群中有足够的资源来支持新创建的资源池。

4. 重新创建 Resource Pool

  • 在确认上述问题修复后,重新执行 CREATE RESOURCE POOL 语句:
    CREATE RESOURCE POOL mq_pool1
        UNIT = 'unit2_new',
        UNIT_NUM = 1,
        ZONE_LIST = ('zone1');
    

其他建议

如果问题仍未解决,建议使用 obdiag 工具进一步收集诊断信息:

obdiag rca run --scene=ddl_failure

并将生成的日志压缩包提供给我们,以便更深入地分析问题。

此外,您可以参考官方文档中关于 Resource PoolResource Unit 的详细说明,确保配置符合规范。

希望以上信息对您有所帮助!

详情请参考:

  1. 3.x 与 4.x 视图变更
  2. 4000 ~ 4499

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

1 个赞

多看多做


是不是因为DATA_DISK_CAPACITY为负数导致的,那具体要怎么解决这个问题
怎么扩容数据盘

DATA_DISK_CAPACITY这个为负应该不合理。
当前ob架构是啥样
麻烦查询下select * from dba_ob_units;

麻烦再提供一下你的yaml文件 ~/.obd/cluster/xxx/下