大家好,我给zone1新增加的一个Observer,和新增加的一个zone3,为啥这个资源水位图没有变化呢,这个集群下已经创建了租户,在我增加zone3之前租户数据库已有数据,我后面又同步了新的数据到数据库中
你的图忘记贴了。
OB 的扩容有两个层面,一个是集群层面扩容(给zone加机器或者加zone),二个是租户层面扩容(给租户的zone加unit_num或者给租户加zone)。二者是独立的,租户扩容的前提是集群里有剩余资源。你看到的 0% 就表示那个机器资源分配是0(还没有使用),并不是你给集群加了机器 就一定会被使用。是有可能被使用也有可能不被使用。
如果你手动部署过 OB 集群,然后新建租户,你就知道租户的产生原理。那么扩容这里就好理解了。
OB 扩缩容原理可以看: 揭秘OceanBase的弹性伸缩和负载均衡原理
V4 版本下查看 集群资源和租户资源分布 SQL 如下:
select zone,concat(SVR_IP,':',SVR_PORT) observer,
cpu_capacity_max cpu_total,cpu_assigned_max cpu_assigned,
cpu_capacity-cpu_assigned_max as cpu_free,
round(memory_limit/1024/1024/1024,2) as memory_total,
round((memory_limit-mem_capacity)/1024/1024/1024,2) as system_memory,
round(mem_assigned/1024/1024/1024,2) as mem_assigned,
round((mem_capacity-mem_assigned)/1024/1024/1024,2) as memory_free,
round(log_disk_capacity/1024/1024/1024,2) as log_disk_capacity,
round(log_disk_assigned/1024/1024/1024,2) as log_disk_assigned,
round((log_disk_capacity-log_disk_assigned)/1024/1024/1024,2) as log_disk_free,
round((data_disk_capacity/1024/1024/1024),2) as data_disk,
round((data_disk_in_use/1024/1024/1024),2) as data_disk_used,
round((data_disk_capacity-data_disk_in_use)/1024/1024/1024,2) as data_disk_free
from gv$ob_servers;
select t1.name resource_pool_name, t2.`name` unit_config_name,
t2.max_cpu, t2.min_cpu,
round(t2.memory_size/1024/1024/1024,2) mem_size_gb,
round(t2.log_disk_size/1024/1024/1024,2) log_disk_size_gb, t2.max_iops,
t2.min_iops, 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;
嗯嗯,是忘记上图了,我这个是属于您说的第一个集群层面的扩容,我给zone1增加了新的observer和新增加zone3,这个资源什么时候能被使用到呢,现在新的observer和zone里面是否有了新数据?我之前理解的创建完之后,由集群自动去管理,现在还显示资源使用0%,是需要我去干预这些资源的使用吗
集群新增zone,租户也要扩容新增zone,该新增zoneil才有数据。
集群zone新增机器,租户数据可能在那台机器或不在,取决于集群资源使用情况是否触发 负载均衡策略。这点不用关心,让ob自行决定。
建议先看看前面文章链接。
我刚才给租户扩容新增zone3之后,资源已经显示出来了,我给zone1新增的这个observer资源,看着还没有体现,我看您上面说的是取决于集群资源使用情况是否触发,由ob自行决定,从我这个截图来看,是不是说明这个新添加的observer目前是还没有使用到的呢
资源管理的截图发下
是的,您这个是哪个版本的observer,如果要做成每个zone的unit不对等,需要调整资源池配置,4.x现有版本应该都得unit在不同zone里对等,没办法自动平均负载,如果是3.x的话可以新建unit=2的资源池给zone1,原有的资源池的zonelist改为zone2,zone3
你先添加的机器上面都没有任何资源,肯定不会显示水位
你集群的版本是多少4X吗,4X的话不支持不同ZONE里面,租户的UNIT NUM是不一样的,3X是支持的
我给zone1添加的这个observer,应该怎么操作才能使用到这台Observer资源呢,我以为是OB自动处理的
4X你需要在其他ZONE里面也添加一台observer,做到所有ZONE里面的observer数量是一样的,然后把租户的 UNIT NUM调整成2,这样系统才会自动的去做资源的负载均衡
我用的是4.3.5,那是不是说,每个zone里面,资源都应该是一样的?比如说我给另外两个zone,分别再增加一台同规格的Observer,这样OB就能做到自动分配吗
哦,OB的4.x版本为啥这么做呢,感觉有点资源浪费呢,如果扩展observer的话,必须要所有的zone都扩展为相同的资源,这个理解对吗
每个zone资源unit数量是一样的,你把另外两个zone分别增加一台observer,然后改下资源池的unit_num=2,然后就可以自动去分配了
这个不是资源浪费的问题,4X是单机日志流,为了更好实现扩缩容,必须要做到对于同一个租户,在不同的ZONE的 UNIT是一样的,不然你要是扩容和缩容,从日志流层面是没办法实现扩缩容的
您好,请问下,我在给另外两个zone也分别增加一个OBServer期间,我的集群还可以正常对外提供服务吗,我们原始数据有近20T,需要从Mysql迁移到OB,我在想给每个zone扩容OBServer期间,可能时间会比较长
您好,我给另外两个zone分别添加一个OBServer之后,资源水位出来了。
我有一个疑问,比如我有20T的原始mysql数据,迁移到OB,使用2-2-2的架构,是不是我每个OBServer规划的数据磁盘空间每个大于10T就可以呢,剩下的这20T的数据,划分存储到哪个OBServer,需要我们自己关心吗
最好保持每台observer的磁盘数据在70%以下。ob会进行合并等操作磁盘占用量会存在波动。当磁盘占用达到95%ob将停止读写服务