obd 扩容 OB 节点时如何均衡存量分区数据

【使用环境】测试环境
【OB or 其他组件】OBD、OceanBase
【使用版本】4.2
【问题描述】新增节点后分区未自动迁移,怎么手动触发负载均衡?
【复现路径】执行 obd cluster add 新增节点
【附件及日志】无
【备注】[@论坛小助手]

3 个赞

在您描述的情况下,OceanBase数据库在新增节点后没有自动触发分区的重新分配(即负载均衡),这可能是由于集群的配置或某些限制条件导致的。要手动触发负载均衡以更均匀地分配现有的分区数据到新加入的节点上,您可以考虑使用obd命令行工具来操作。但请注意,在执行任何可能影响生产环境的操作之前,请确保已备份重要数据,并且建议在非高峰时段进行这些调整。

对于您的情况,首先需要确认的是OceanBase集群是否已经正确识别到了新加入的Observer节点。如果新节点已被正常加入集群,则可以尝试通过以下步骤手动发起一次单元(Unit)迁移:

  1. 使用obd cluster edit-config修改相关配置,比如调整unit_num参数值,促使系统重新评估并启动必要的平衡操作。
  2. 更新完配置文件之后,使用obd cluster reload命令使更改生效。
  3. 监控后台日志以及oceanbase提供的监控指标,查看是否开始执行了数据重分布过程。

不过,以上方法适用于OBD管理下的OceanBase部署。如果希望通过obdiag工具来收集有关当前集群状态及分区分布情况的信息,那么可以采取如下措施:

日志采集场景: unit迁移/缩小 副本不均衡问题
日志采集命令: obdiag gather scene run --scene=observer.unit_data_imbalance

此命令将帮助收集关于集群中单位(Unit)数据不平衡相关的诊断信息,包括但不限于:当前的分区分布、最近的数据迁移记录等。请您运行上述命令后将生成的日志文件分享给我们,以便进一步分析为何分区没有自动迁移到新的节点上。

为了能够更准确地定位问题,请提供以下额外信息:

  1. 新增的Observer节点是否已经成功加入集群?可以通过obd cluster display查看当前集群状态。
  2. 您能提供一下目前集群的拓扑结构吗?特别是各个节点的角色(如MergeServer, RootService等)。
  3. 集群版本是多少?不同的版本可能会影响某些功能的行为。
  4. 扩容前后的具体配置变更是什么?例如,是否有调整过unit_config里的设置?
  5. 在扩容过程中观察到哪些异常现象或者错误消息?检查observer.log和其他相关日志文件中是否有提示。

希望这些信息可以帮助我们更好地理解现状并找到合适的解决方案。

附上敏捷诊断工具 obdiag 使用帮助链接

3 个赞

有实践意义。学习下。

调整unit数量或规格配置

1 个赞