看到一个帖子截图,有点疑惑
资源不足,能否创建unit?
unit是规格,只有当unit被resource pool使用才会占用资源
何为使用?
创建资源池 可以成功, 但创建租户 失败?
创建资源池成功但创建租户失败可能的原因之一是有租户已经在使用该资源池,这将导致错误码 4626。根据提供的文档片段中的信息,解决这个问题的方法包括:
__all_resource_pool 表,获取引用该资源池的租户 tenant_id。V$OB_LS_LOG_RESTORE_STATUS 表中的系统日志流的恢复状态来获取。详情请参考:
您好!看起来您提到了一些关于 OceanBase 资源管理和创建 unit 时的问题。为了更准确地解答您的疑问,我将问题拆分为几个部分进行解释。
根据 OceanBase 的设计理念,资源单元 (unit) 的创建依赖于资源池 (resource pool) 和资源配置 (unit config)。具体来说,如果集群当前没有足够的资源来满足新创建的 unit 需求,那么创建 unit 将会失败。这是因为每个 unit 都需要一定量的 CPU、内存等资源,而这些资源必须从集群现有的资源池中分配。
这种情况确实可能发生,通常原因如下:
检查资源池的资源使用情况:
SELECT * FROM __all_resource_pool;
查看是否有其他租户正在使用该资源池,并确定资源池的当前资源使用情况。
删除或缩容现有租户:
如果资源池已经满了,可以考虑删除或缩容一些现有的租户,以释放资源。
-- 删除租户
DROP TENANT <tenant_name>;
-- 缩容租户
ALTER TENANT <tenant_name> SET UNIT_NUM = <new_unit_num>;
创建新的资源池:
如果当前资源池无法满足需求,可以考虑创建一个新的资源池。
CREATE RESOURCE POOL <pool_name> UNIT '<unit_config>', <unit_num>;
调整资源配置:
如果资源配置过高,可以适当降低资源配置,使其符合资源池的容量。
CREATE RESOURCE UNIT <unit_config> MAX_CPU <max_cpu>, MIN_CPU <min_cpu>, MEMORY_SIZE '<memory_size>';
在资源不足的情况下,创建 unit 通常是不可行的。如果创建资源池成功但创建租户失败,可能是由于资源池已满或其他资源配置不匹配的原因。通过检查资源池的资源使用情况、删除或缩容现有租户、创建新的资源池或调整资源配置,可以解决这些问题。
希望这些信息对您有所帮助!如果您有更多问题或需要进一步的帮助,请随时告诉我。
具体信息可参考以下文档:
需要理解此处创建资源的意义是什么!
create resource unit 命令是创建一个资源规格,比如2C/8G 的资源规格,查询资源规格信息,相关视图是DBA_OB_UNIT_CONFIGS.
unit 在ob 代表一个资源单元,OB 在创建租户的时候,就需要在指定的zone 创建一个unit. 而此时如果资源不足,就不能创建租户。
所以关键点就是create resource unit 命令是创建资源规格,此图想表达是可以创建unit(资源规格)的意思!
对,创建Unit不占用资源,也不检查资源是否满足,只是个定义
Unit是规格,resource_pool实际占用资源。
+----------------+--------------+------------------+--------------+--------------+
| SVR_IP | CPU_CAPACITY | CPU_CAPACITY_MAX | MEMORY_LIMIT | MEM_CAPACITY |
+----------------+--------------+------------------+--------------+--------------+
| 192.168.169.43 | 12 | 12 | 49.8 GB | 42.8 GB |
| 192.168.169.44 | 12 | 12 | 49.8 GB | 42.8 GB |
| 192.168.169.45 | 12 | 12 | 49.8 GB | 42.8 GB |
+----------------+--------------+------------------+--------------+--------------+
CREATE RESOURCE UNIT u1 MAX_CPU 13, MIN_CPU 2, MEMORY_SIZE '16G' ;
obclient(root@sys)[oceanbase]> CREATE RESOURCE POOL rp1 UNIT 'u1', UNIT_NUM 1, ZONE_LIST('zone1','zone2','zone3');
ERROR 4733 (HY000): zone 'zone1' resource not enough to hold 1 unit. You can check resource info by views: DBA_OB_UNITS, GV$OB_UNITS, GV$OB_SERVERS.
server '"192.168.169.43:2882"' CPU resource not enough
创建资源池的时候才会真正分配资源,unit只是资源的定义