一号日志流(Log Stream 1)与 Root Service(RS)的关系非常紧密,可以概括为:Root Service 的“肉身”寄居在一号日志流的 Leader 上。
在 OceanBase 的架构中,一号日志流通常被称为 Sys Log Stream (SYS_LS),其 ID 固定为 1。
具体关系如下:
Root Service 的“定海神针”
位置绑定:全局的 Root Service 服务并不是运行在任意节点上的,而是严格运行在系统租户(Sys Tenant)一号日志流(LS 1)的 Leader 节点 上。
共生共死:
- 当选:如果某个 OBServer 节点当选为系统租户 LS 1 的 Leader,它会自动启动 Root Service 服务,成为集群的主控节点。
- 卸任:如果发生切主(Leader Switch),原 Leader 节点上的 Root Service 会自动停止,新 Leader 节点上的 Root Service 会随之启动。
- 机制保障:OceanBase 会不断监控系统租户 LS 1 的状态。一旦发现本地成为了 LS 1 的 Leader(is_strong_leader),就会尝试启动 RS。
为什么是一号日志流?
数据的一致性:Root Service 管理着集群的元数据(如服务器列表、资源单元、其他租户的元数据等)。这些核心元数据通过 Paxos 协议同步,而承载这些元数据修改日志的正是系统租户的 LS 1。
天然的高可用:因为 LS 1 本身基于 Paxos 协议实现了多副本高可用,Root Service 绑定在它上面,天然就获得了高可用能力(日志流切主 = RS 故障转移)。
普通租户的一号日志流
不仅仅是系统租户,每个普通用户租户也都有自己的一号日志流。
在普通租户中,LS 1 的 Leader 上运行着 ObPrimaryLSService(类似于该租户的“小 RS”)。
它负责管理该租户内部的日志流生命周期(如创建、删除日志流)、广播该租户的集群级别信息等。
总结
一号日志流(LS 1)是 OceanBase 中用于承载“管理与元数据”的特殊日志流。对于系统租户而言,它的 Leader 就是整个集群大脑(Root Service)的所在地。
适用版本
OceanBase 数据库 V4.x 版本。