首批通过分布式安全可靠测评,为关键业务系统打造
日志流和副本概述
更新时间:2026-02-20 09:10:47
OceanBase 数据库参考传统数据库分区表的概念,把一张表格的数据划分成不同的分区(Partition)。在 V4.x 版本中,分区是用户创建的逻辑对象,是划分和管理表数据的一种机制。
每个分区都有其对应的数据存储对象,称之为分片(Tablet),它具备存储数据的能力,支持在机器之间迁移(transfer),是数据均衡的最小单位。Tablet 与分区一一对应,单分区表会创建一个Tablet,多分区表会为每个分区各创建一个 Tablet。
日志流是由 OceanBase 数据库自动创建和管理的实体,它代表了一批数据的集合,包括若干 Tablet 和有序的 Redo 日志流。它通过 Paxos 协议实现了多副本日志同步,保证副本间数据的一致性,实现了数据的高可用。
在分布式环境下,为保证数据读写服务的高可用,OceanBase 数据库会把同一个日志流的数据拷贝到多个机器。不同机器同一个日志流的数据拷贝称为副本(Replica)。同一日志流的多个副本使用 Paxos 一致性协议保证副本的强一致,每个日志流和它的副本构成一个独立的 Paxos 组,其中一个日志流为主副本(Leader),其它日志流为从副本(Follower)。主副本具备强一致性读和写能力,从副本具备弱一致性读能力。
Location Cache
OceanBase 数据库按日志流、分片组织用户数据,且每个日志流有多个副本用于容灾。因此,在 SQL 请求执行过程中需要知道分区数据的位置信息,用于路由到特定机器读写对应副本的数据。分区数据的位置信息即称为 Location,每个 observer 进程会有一个服务,用于刷新及缓存本机需要的分区 Location 信息,该服务称为 Location Cache 服务。
V4.0.0 版本引入了日志流、分片的概念,如果需要获取分区数据的 Location 信息,就需要知道分区对应的分片、分片与日志流的映射关系,以及日志流副本的位置信息。您可以通过以下系统租户下的数据字典获取:
oceanbase.CDB_OBJECTS:指定OBJECT_TYPE为TABLE、TABLE PARTITION或TABLE SUBPARTITION可以获取对应分区的DATA_OBJECT_ID,即TABLET_ID(租户下分片的唯一标识)。oceanbase.CDB_OB_TABLET_TO_LS:获取分片所属的日志流,日志流在租户下通过LS_ID唯一标识。oceanbase.CDB_OB_LS_LOCATIONS:获取日志流的副本类型及位置。
副本类型
根据日志流副本存储数据种类的不同,副本被划分成不同的类型,以支持不同业务在数据安全、性能伸缩性、可用性、成本等之间的选择。
OceanBase 数据库支持以下类型的副本:
全能型副本(FULL/F)
全能型副本称为 Paxos 副本,对应副本可构成 Paxos 成员组,参与选举投票。
只读型副本(READONLY/R)
对于 V4.x 版本,OceanBase 数据库从 V4.2.0 版本开始支持只读型副本。只读型副本为非 Paxos 副本,对应副本不可构成 Paxos 成员组,不参与选举投票。
列副本(COLUMNSTORE/C)
对于 V4.x 版本,OceanBase 数据库从 V4.3.3 版本开始支持列存副本。列存副本与只读副本类似,也为非 Paxos 副本,对应副本不可构成 Paxos 成员组,不参与选举投票。
分布式一致性协议
OceanBase 数据库使用 Paxos 协议在同一日志流各副本间同步事务日志,多数派同步成功才能提交。缺省情况下读、写操作在主副本上保证强一致;从副本支持弱一致性读,允许读取某一个稍旧版本的数据。
此外,对于 V4.3.x 版本,OceanBase 数据库从 V4.3.1 版本开始支持 R 副本按照 Region 级联,跨 Region 部署的 R 副本可以自动组成树状级联结构来同步日志,减少跨 Region 网络流量的消耗。
数据均衡
OceanBase 数据库通过 Root Service 管理租户内各个资源单元间的负载均衡。不同类型的副本对资源的需求各不相同,Root Service 在执行均衡操作时需要考虑的因素包括每个资源单元的 CPU、磁盘使用量、内存使用量以及 IOPS 使用情况。经过负载均衡,最终会使得所有机器的各类型资源占用都处于一种比较均衡的状态,充分利用每台机器的所有资源。
Root Service 主要通过以下两种方式实现数据均衡:
副本均衡
Root Service 会通过 Unit 迁移、日志流副本复制或迁移的方式,调整租户在各机器上的资源占用情况。
Leader 均衡
在副本均衡的基础上,Root Service 会根据租户的 Primary Zone 等因素,自动创建并均衡各机器日志流的 Leader 的数目。有关日志流 Leader 均衡的详细介绍,参见 租户内均衡。