server_permanent_offline_time 补资源是否依赖enable_rebalance 的 控制

【 使用环境 】生产环境 or 测试环境

【 OB or 其他组件 】OB

【 使用版本 】v4.2.5–v4.4.2

【问题描述】

从官网上看enable_rebalance控制资源均衡相关的事,控制的范围比较多。而server_permanent_offline_time 判定为永久下线后,后续的自动补副本操作我理解也是一个资源均衡类的事,但没有说明后续的自动补副本操作是否受enable_rebalance 控制。

我认为server_permanent_offline_time 被判定永久下线,后续的自动补副本操作不受enable_rebalance 控制,我想确认这一点。

3 个赞

是的,enable_rebalance的设置直接影响系统是否自动进行资源补给和重新平衡。

1)当 enable_rebalance`设置为 true 时:系统会定期检查各个节点的状态和负载,如果检测到某个节点出现问题(如宕机或高负载),系统会自动尝试重新分配任务到其他健康的节点,从而实现资源的自动补给和负载均衡;
2)当 enable_rebalance 设置为 false时:系统不会自动进行节点的重新平衡或资源的补给。在这种情况下,如果某个节点出现问题,可能需要手动介入来重新分配任务或添加新的节点来确保系统的稳定性和性能。

节点被 server_permanent_offline_time 判定永久下线后,后续整套补副本流程不受 enable_rebalance 管控,enable_rebalance=false 照样自动补齐缺失副本

1 个赞

我希望给出确定性答复的能带上官方链接。而不是和我一样推测。

@论坛小助手

根据文档库中的信息,server_permanent_offline_time 控制的是一个节点在多长时间心跳中断后被判定为永久下线,并且一旦被判定为永久下线,其上的数据副本会被自动补足。而 enable_rebalance 主要控制的是集群或租户内的负载均衡功能,包括 Unit 的迁移以达到资源平衡的状态。

具体来说:

  • server_permanent_offline_time:当一个节点的心跳中断时间超过 server_permanent_offline_time 设置的值时,该节点被视为永久下线。此时,系统会自动启动副本补齐的过程,即在同 Zone 的其他 Server 上开辟区域并维持原有的副本个数。这一过程与负载均衡相关,但主要是为了确保数据的高可用性,而不是直接为了实现资源的均匀分布。参见 高可用 FAQ → OceanBase 集群的副本自动补齐功能是如何工作的,副本自动补齐是否能够保证即使在节点宕机的情况下,相应的分区副本依旧齐全?

  • enable_rebalance:这个配置项决定是否开启后台负载均衡操作(如 Unit 迁移),目的是让集群内的资源使用更加均匀。然而,在官方文档中没有明确指出 server_permanent_offline_time 判定后的副本补齐过程受 enable_rebalance 控制。事实上,在某些情况下,例如节点永久下线时,即使 enable_rebalance 为 False,为了保持集群的数据冗余度和高可用性,系统仍然会进行必要的副本复制操作。参见 enable_rebalance → 功能描述

因此,可以确认的是,对于因 server_permanent_offline_time 而触发的副本补齐操作,它并不完全依赖于 enable_rebalance 的状态。也就是说,即使 enable_rebalance 未开启,OceanBase 仍会执行必要的副本补齐动作来维护集群的稳定性和数据的安全性。这与您所理解的一致。

更多信息请查看:

  1. 高可用 FAQ
  2. server_permanent_offline_time
  3. enable_rereplication
  4. enable_rebalance
  5. replica_safe_remove_time
  6. 节点宕机
  7. 重启节点
  8. 资源单元的均衡
  9. unit_balance_resource_weight
  10. rebuild_replica_data_lag_threshold