oms迁移报错2

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OMS
【 使用版本 】OMS 社区版4.2.13,OB社区版4.4.2
【问题描述】清晰明确描述问题

表全量迁移报错,查看报错详情是 (conn=322916) Too many partitions (including subpartitions) were defined Query: create /*+ parallel(4) */ index if not exists idx_date on superlink_daily_report (dt ASC) with column group (all columns, each column) Parameters: []

看文档里说这个原因是:
每个 OBServer 节点的分区副本数可根据租户内存大小来预估,1G 内存约支持约 2 万 tablet (分区、索引等底层均为 tablet)

然后我扩了内存,确实解决了,但是过了一段时间又报这个错误,然后我继续扩内存依然能解决,直到每个observer 的tablet 达到37万(如下图),此时我继续扩内存,单个observer 从30G --》40 G已经无法解决了,按理说40G大约能支持80万左右的tablet ,所以我觉得应该不是这个问题了,想问下是不是还有别的限制,或者怎么排查下

另外,我们源端mysql表和分区比较多,有6000多张表,20万分区

2 个赞

把日志信息 发一下 看看具体是不是内存不够 报错了



日志里是空的
这里也很奇怪,明明报错了,但是查看组件监控显示的是全量导入已完成,实际没完成
然后看error.log ,是空的,没有任何报错日志


进到oms容器内部看日志也确实是空的

租户资源规格限制

  • 即使未达到 max_partition_num 的逻辑上限,实际能创建的分区数量还受限于租户的资源规格,尤其是内存大小。
  • OceanBase 对单机上每个租户的分区数有计算公式:
    partition_num = (max_memory - memstore_limit) / partition_mem

找到原因了,是因为虽然增加了租户内存,但是memstore 默认占用了租户内存的50%,所以即使扩到了每个observer内存达到40G,memstore 占用了20G,tablet 实际能使用的也就剩20G,大约40万tablet ,现在已经有了37万,所以继续创建仍然报错,把租户级配置项 _memstore_limit_percentage 和集群级配置项 memstore_limit_percentage 调小后就可以了

看来迁移的数据量巨大

加油