stop server操作,observer进程会退出吗?

@论坛小助手 stop server操作,节点会停止心跳吗?
目前只知道status状态会变为inactive,停止对外提供服务,stop的server主副本会被切到其他observer上,还有其他什么影响吗?

明显不会

1 个赞

@论坛小助手

1 个赞

根据文档库中的信息,STOP SERVER 操作会对 OceanBase 集群中的目标节点产生以下影响:

  1. 节点状态变化

    • 执行 STOP SERVER 命令后,目标节点的状态会从 ACTIVE 变为 stoppedACTIVE 状态且 stop_time 字段大于 0),最终在视图 oceanbase.DBA_OB_SERVERS 中标记为 INACTIVE
    • 这一状态变化表明该节点已停止对外提供服务,并且不会接收新的业务请求。
  2. 心跳机制

    • 根据文档片段 4 的描述,STOP SERVER 操作后,目标节点的心跳机制仍然存在,但其心跳数据包会被 Root Service 忽略,从而避免应用层感知到该节点的异常状态。因此,节点并不会完全停止心跳,而是被逻辑隔离
  3. 主副本切换

    • 在执行 STOP SERVER 操作时,目标节点上的所有 Leader 主副本会被切走,确保这些分区的主副本迁移到其他健康的节点上。这一过程是通过 Paxos 协议完成的,保证了数据一致性和高可用性。
  4. Observer 进程是否退出

    • 根据文档片段 1 和片段 2 的描述,STOP SERVER 操作并不会直接导致 Observer 进程退出。它只是将节点标记为不可用状态,并触发主副本切换和流量隔离。如果需要完全终止 Observer 进程,可以使用其他命令(如通过 obshell cluster stop 或 API 停止进程)。
  5. 其他影响

    • 选举和服务优先级:当目标节点被隔离或其 Leader 出现故障时,系统会触发选举。选举服务会考虑用户指定的 Primary Zone 和机器的异常状态,选择更优的副本作为主副本。
    • 副本自动补齐:如果目标节点长时间无法恢复(超过配置项 server_permanent_offline_time 的阈值),OceanBase 会将其标记为永久下线,并在其他健康节点上补齐丢失的副本(见文档片段 8)。

总结

  • Observer 进程不会因为 STOP SERVER 操作而退出,但节点会被逻辑隔离,不再对外提供服务。
  • 节点的心跳机制仍然存在,但其状态会被标记为 INACTIVE,Root Service 不再将其视为可用节点。
  • 主副本会被切走,确保业务无损。
  • 如果节点长期不可用,可能会触发副本自动补齐机制。

以上信息依据的是文档片段《数据库层高可用 → 隔离节点》和《重启节点 → 背景信息》中的相关内容。

检索到的文档如下:

  1. 数据库层高可用
  2. 重启节点
  3. server_permanent_offline_time
  4. 容灾架构及容灾级别
  5. 停止 OceanBase 集群
  6. 高可用 FAQ
1 个赞

@论坛小助手 再请教下,stop server后 __all_server表的 status 为 inactive,stop_time > 0,是吗?

根据文档库中的信息,执行 STOP SERVER 操作后,目标服务器的状态会发生如下变化:

  1. 状态字段的变化
    在视图 oceanbase.DBA_OB_SERVERS 中,目标服务器的状态会从 ACTIVE 变为 INACTIVE。这是明确的文档描述(参见文档片段《检查 OBServer 状态 → 通过视图查看 OBServer 状态》)。

  2. stop_time 字段的变化
    在执行 STOP SERVER 操作时,目标服务器会被标记为 stopped 状态,其特征是:

    • 状态字段为 ACTIVE,但 stop_time 字段大于 0(参见文档片段《重启节点 → 背景信息》)。
    • 这一状态表示服务器正在被停止的过程中,客户端不会将业务请求路由到该节点。
  3. 最终状态
    STOP SERVER 操作完全完成后,服务器的状态会在视图中更新为 INACTIVE,而 stop_time 字段的意义不再适用(因为此时服务器已完全停止服务)。

回答您的问题

  • 执行 STOP SERVER 后,__all_server 表(或等价视图 oceanbase.DBA_OB_SERVERS)中的 status 字段会变为 INACTIVE
  • STOP SERVER 的中间过程中,可能会短暂出现 statusACTIVEstop_time > 0 的状态,但这只是过渡状态,最终会变为 INACTIVE

以上信息依据的是文档片段《检查 OBServer 状态 → 通过视图查看 OBServer 状态》和《重启节点 → 背景信息》中的相关内容。

检索到的文档如下:

  1. 重启节点
  2. oceanbase.DBA_OB_SERVICES
  3. 4500 ~ 4999
  4. 数据库层高可用
  5. 4000 ~ 4499
  6. server_permanent_offline_time
  7. oceanbase.CDB_OB_SERVICES
  8. 检查 OBServer 状态
  9. 使用 systemd 部署 OceanBase 数据库
1 个赞

不会哈,需要手动停止进程!OBCP 相关资料,有详细介绍!
OBCP认证-OceanBase OBCP考试官网-OBCP证书领取-OceanBase