SZJT
#1
【产品名称】开源 OceanBase
【产品版本】3.1.1
【问题描述】我有3个zone,每个zone下面一个obs、结构为1-1-1 。配置为 16c/64G/2T 、假设现在每个observer的磁盘都使用到了1.8T、存储空间不足。现在扩容集群规模为2-2-2、新增的3个obs配置依然为16c/64G/2T、unit_unmber改为2、在数据量不变的情况下、集群可用计算资源48c/192G,数据完全平衡完以后,每个obs节点磁盘占用是900G吗?还是后加入的OBS每个节点占用还是1.8T?
和顺
#2
1、由于目前OB中datafile_size参数或者datafile_disk_percentage参数不支持调小,命令行中调小可以执行成功,但文件并不会缩小。
2、OB在开始部署的时候磁盘上的数据文件block_file就是预分配的,虽然可以通过扩容将一部分分区的数据迁移到扩容后的节点,并最终均衡,但实际文件的大小并不会缩小。
3、可以尝试扩容后尝试滚动重做节点的方式在启动的时候指定-o datafile_size来达到缩减数据文件的目的。
可以参考视频:https://open.oceanbase.com/docs/videoCenter/5900003
说明:重做节点是高危动作,需要谨慎操作。
SZJT
#4
我明白您说的意思,如果我的存储容量是2T datafile_disk_percentage=80、也就是集群启动后磁盘会占用1.6T的空间,但是其实里面是没有数据的,类似于vmware厚卷的概念。只是OB把磁盘先占用上了,担并不是实际数据是1.6T。如果我1-1-1的集群、每个OBS节点的数据量为1.4T,也就是说我还有200G的可用空间。扩容集群为2-2-2、那么后3个obs起来,集群集群的配置磁盘占用肯定还是服务启动后就会占用1.6T的空间、那么问题来来,后加入的这3个obs,实际数据量是多少,还是每个节点1.4T吗。还是6个节点会平分数据
和顺
#5
如果新增的observer分别对应原来的每个zone,那么实际使用的磁盘空间是扩容后的6个节点平分。
如果新增的observer对应新的3个zone,那么所有的6个节点的磁盘使用空间跟扩容前的一致,每个zone都有全一份全量数据。
SZJT
#6
就是同zone下增加。 1-1-1 扩容为 2-2-2、 还是3个zong,只不过是扩容后没个zone下是2个obs了、如果原来每个节点实际数据是1.4T,新增后每个节点实际数据大小是700G了吗
SZJT
#7
全量数据是针对zone来说的吧,不管同一集群下多少个zone,每个zone下都有一份全量的数据。和OBS没有关系。如果zone1下有一个OBS,那么这个OBS放的就是zone1的全量数据。如果zone1下有4个OBS,那么zone1的全量数据是平分在4个obs下。是这样么
SZJT
#9

那实际数据大小怎么统计啊,如图,现在是1-1-1、节点use大小就是实际数据量,如果2-2-2,是要把一个zone下大小相加吗
和顺
#10
__all_virtual_disk_stat可以跟 __all_server之类的表进行关联查询,如:
select zone,sum(d.used_size) from __all_server s, __all_virtual_disk_stat d where s.svr_ip=d.svr_ip and s.svr_port=d.svr_port group by s.zone;