首批通过分布式安全可靠测评,为关键业务系统打造
选举
更新时间:2024-10-31 23:00:00
OceanBase 数据库 V4.x 相比于 OceanBase 数据库 V3.x 最大的改变,是把多个数据分区合并为一个日志流,数据分区挂在某一个日志流上,由此可以极大的节省内存、CPU、网络带宽等资源的使用。数据分区不再独立拥有角色信息,而是由其归属于的日志流角色决定,日志流角色通过选举协议产生。因此在 OceanBase 数据库 V4.x 中的切主动作是日志流维度的。
OceanBase 数据库有着多租户的概念,租户是 OceanBase 数据库中资源隔离的单位,而日志流是每个租户独立拥有的。因此在 V4.x 中排查切主问题时首先要确认租户的 ID 以及日志流的 ID。
日志流的 Leader 上任取决于三个模块,自底向上分别是:
选举模块
基于 OceanBase 数据库特有的选举算法,产生 Leader 并保证 Leader 的唯一性,称其为 Election Leader。
CLOG 模块
基于 Election Leader,先执行 reconfirm 流程,从而保证 CLOG Leader 具有全量日志。然后执行 CLOG 的上任流程,其上任流程为异步的通知 RoleChangeService 模块。此后,CLOG Leader 有效。
RoleChangeService 模块
当感知到 CLOG Leader 需要执行上任流程后,负责执行具体的上任逻辑,需要感知 Leader 切换的模块会接入 RoleChangeService 模块,从而感知切换动作并执行自身的切换逻辑。