暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据分区和分区副本概述

原创 huayumicheng 2023-08-25
837
转载:https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000943941


OceanBase 数据库参考传统数据库分区表的概念,把一张表格的数据划分成不同的分区(Partition)。在分布式环境下,为保证数据读写服务的高可用,OceanBase 数据库会把同一个分区的数据拷贝到多个机器。不同机器同一个分区的数据拷贝称为副本(Replica)。同一分区的多个副本使用 Paxos 一致性协议保证副本的强一致,每个分区和它的副本构成一个独立的 Paxos 组,其中一个分区为主分区(Leader),其它分区为备分区(Follower)。主分区具备强一致性读和写能力,备分区具备弱一致性读能力。

Location Cache

OceanBase 数据库按分区组织用户数据,且每个分区有多个副本用于容灾。因此,在 SQL 请求执行过程中需要知道分区的位置信息,用于路由到特定机器读写对应分区副本的数据。分区的位置信息即称为 Location,每个 observer 进程会有一个服务,用于刷新及缓存本机需要的分区 Location 信息,该服务称为 Location Cache 服务。

分区的 Location 信息持久化到了 OceanBase 数据库内置的表中,持久化 Location 的内置表称为 Meta 表。为解决集群自举的问题,不同类型的表的 Location 信息是按层次组织的,不同类型的表的 Location 会持久化到不同的 Meta 表中。各级 Meta 表所记录的内容如下:

  • __all_virtual_core_root_table:记录 __all_root_table 的 Location。

  • __all_root_table:记录集群中所有内置表的 Location。

  • __all_virtual_meta_table:记录集群中所有租户的用户创建的表的分区的 Location。

副本类型

在 OceanBase 数据库中,为了数据安全和提供高可用的数据服务,每个分区数据在物理上存储多份,每一份叫做分区的一个副本。每个副本包含了存储在磁盘上的静态数据(SSTable)、存储在内存的增量数据(MemTable)以及记录事务的日志等三类主要数据。根据存储数据种类的不同,副本有几种不同的类型,以支持不同业务在数据安全、性能伸缩性、可用性、成本等之间的选择。

当前,OceanBase 数据库支持以下四种类型的副本:

  • 全能型副本(FULL/F)

  • 日志型副本(LOGONLY/L)

  • 加密投票型副本(ENCRYPTVOTE/E)

  • 只读型副本(READONLY/R)

全能型、日志型或加密投票型副本又称为 Paxos 副本,对应的副本可构成 Paxos 成员组;而只读型副本又称为非 Paxos 副本,对应的副本不可构成 Paxos 成员组。

分布式一致性协议

OceanBase 数据库使用 Paxos 协议在同一分区各副本间同步事务日志,多数派同步成功才能提交。缺省情况下读、写操作在主分区上保证强一致;备副本支持弱一致性读,允许读取某一个稍旧版本的数据。

数据均衡

OceanBase 数据库通过 RootService 管理租户内各个资源单元间的负载均衡。不同类型的副本对资源的需求各不相同,RootService 在执行分区管理操作时需要考虑的因素包括每个资源单元的 CPU、磁盘使用量、内存使用量以及 IOPS 使用情况。经过负载均衡,最终会使得所有机器的各类型资源占用都处于一种比较均衡的状态,充分利用每台机器的所有资源。

RootService 主要通过以下两种方式实现数据均衡:

  • 副本均衡

    RootService 会通过 Unit 迁移、副本复制或迁移的方式,调整租户在各机器上的资源占用情况。

  • Leader 均衡

    在副本均衡的基础上,RootService 会根据租户的 Primary Zone 等因素,均衡各机器分区 Leader 的数目。具体表现为,通过将分区 Leader 聚集到同一机器上,减少分布式事务执行的可能,减少业务请求的 RT(Response Time),或者,通过将分区 Leader 在多机上打散,最大限度地利用机器资源,提高系统吞吐能力。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论