Oceanbase 开源版 3.1.0 扩容问题

【产品名称】

Oceanbase 开源版

【产品版本】

3.1.0

【问题描述】

扩容问题

SELECT * FROM __all_virtual_server_stat ;

【问题描述】

  1. 初始安装, 3台物理机(48C, 256G), 每个物理机1个observer 64G,  按照 https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/create-a-user-tenant 部署, 现测试扩容到3台物理机, 每台物理机3个observer
  2. 初始配置  
SELECT svr_ip,svr_port, cpu_total, mem_total, disk_total, zone FROM __all_virtual_server_stat ;

SELECT sum(c.max_cpu), sum(c.max_memory) FROM __all_resource_pool as a, __all_unit_config AS c WHERE a.unit_config_id=c.unit_config_id;

CREATE RESOURCE UNIT unit1
  max_cpu = 41,
  max_memory = 22999549870,
  min_memory = 22999549870,
  max_iops = 100000,
  min_iops = 100000,
  max_session_num = 30000,
  max_disk_size = 21474836480000 -- 200 GB
;

CREATE RESOURCE POOL pool1
  UNIT = 'unit1',
  UNIT_NUM = 1,
  ZONE_LIST = ( 'zone1', 'zone2', 'zone3')
;

CREATE TENANT IF NOT EXISTS tenant1
    charset='utf8mb4',
    replica_num=3,
    zone_list=('zone1','zone2','zone3'),
    primary_zone='RANDOM',
    resource_pool_list=('pool1')
;



3.. 现qing'k 现已将observer加入成功 




SELECT * FROM __all_virtual_server_stat ;

SELECT * FROM __all_virtual_server_stat ;

现已加入observer成功

后续修改资源, 修改租户, 都不成功

具体尝试操作如下:

  新建 pool2 

CREATE RESOURCE POOL pool2

 UNIT = 'unit1',

 UNIT_NUM = 2,

 ZONE_LIST = ( 'zone1', 'zone2', 'zone3');

alter tenant tenant1 resource_pool_list=('pool1','pool2');


或者 直接在pool2上新建租户 tenant2, 

CREATE TENANT IF NOT EXISTS tenant2

  charset='utf8mb4',

  replica_num=3,

  zone_list=('zone1','zone2','zone3'),

  primary_zone='RANDOM',

  resource_pool_list=('pool2')

;



请问该如何正确扩容?  

需求是把9个observer所有资源, 除sys外, 全部分配给同一个租户


楼主主要是想了解


如何将集群的资源全部扩充到现有的一个租户内?

是的

https://www.oceanbase.com/docs/knowledge-base/knowledge-base/V1.0.0/how-to-scale-out-the-oceanbase-cluster

查看这个章节


步骤中第3步报错

报错时能帮发一下这2个sql 结果吗?



select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status, usec_to_time(b.stop_time) stop_time, b.build_version 

from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port)

order by a.zone, a.svr_ip

;




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

;


1 个赞

扩容问题已经好了, 原因还没找到, 今天重启了集群, 执行 `ALTER RESOURCE POOL pool1 UNIT_NUM = 3;` , 刚重启完还是报错, 过了一会, 重试了几次, 突然就成功了, 没有做其他操作 , 谢谢各位

目前看起来有两个经验:

  • 租户在一个zone内部不能有两个pool,也就禁止在一个zone内部有两种规格的资源单元出现。租户在一个zone内部的资源单元规格是统一的,数量有 unit_num 控制。租户在不同的zone可以用独立的pool,也就是不同zone的资源单元规格可以不一样。
  • 删除租户后,还要删除之前租户使用的资源池(pool)。这个资源的释放是异步的,需要等一会(可能几十秒或几分钟)。