再聊OceanBase多副本和高可用

上一篇文章 [[20250221 OceanBase 是如何实现高可用的]] 中介绍了 OceanBase 高可用特性,分布式架构不依赖于某个单一节点,其中最为关键的点在于数据的多副本和集群选举机制,当出现异常情况时,能够快速切换到正常节点提供服务,不影响上层应用系统的正常访问。但分布式和多副本引入了多个节点的写数据同步,往往又会成为性能和可靠性带来更多的不确定因素。

在这种背景下,OceanBase 将 Paxos 共识算法与数据库架构深度整合,实现了 RPO(恢复点目标)=0 与 RTO(恢复时间目标)<30秒的金融级可靠性,在2020年TPC-C基准测试中以7.07亿tpmC的成绩刷新当时的世界纪录。可谓是高可用和性能二者兼得,OceanBase 是如何实现的呢?

Multi-Paxos 实现多日志流数据同步

分区是 OceanBase 数据库的基本单元,为了数据安全和提供高可用的数据服务,每个分区的数据在物理上存储多分,称为副本。副本根据负载和 Zone 的配置策略,由系统自动调度分散在多个 Server 上。OceanBase 采用两级分区架构,将数据表按哈希、列表或范围划分为多个分区,每个分区又可以根据不同维度划分为若干子分区。这种设计既保证单个分片的数据量可控,又通过并行处理提升整体吞吐量。

在这里插入图片描述

不同于经典 Paxos 算法理论模型,OceanBase 采用 Multi-Paxos 进行日志数据同步,为每个分区的多个副本创建 Paxos 日志组进行日志和状态同步,从而实现不同副本之间的数据一致性。

通过将日志提交过程分解为并行流水线,OceanBase 实现了多轮 Paxos 协商叠加。主副本持续接收客户端请求生成连续日志序列,异步线程池批量推送日志到从副本,采用滑动窗口机制确认多数派(N/2+1)副本的持久化。

通过 Multi-Paxos 优化日志复制流程、减少网络交互、提升并行度,在保证强一致性的同时实现了高吞吐和低延迟,是其 TPC-C 测试打破世界纪录的关键基础。

故障恢复与自动选主

多副本是高可用的基础,故障期间的选举机制则是实现快速故障切换的重要手段。

经典的 Paxos 协议每次 Propose 都需要任意节点发起,通过 Prepare 和 Accept 两阶段达成共识,但未定义稳定的 Leader 角色。

OceanBase 采用 Multi-Paxos 协议选举出长期稳定的 Leader,由 Leader 统一处理客户端请求并驱动日志复制,并且采用 Leader 租约 (Lease) 机制,当选的 Leader 通过租约机制维持其权威,租约期间其他节点不会发起选举,避免频繁的 Prepare 操作,从而实现 “一次 Prepare,多次 Accept”优化连续日志复制,减少网络交互。

当网络分区发生时,从副本检测到主副本失联后,发起选举请求,从幸存的从副本中协商出新的主副本,对外承接业务。整个故障切换时间为秒级,中间过程无需人工干预系统自动完成。

写在最后

分布式架构的发展始于互联网时代对高并发与高可用需求的爆发,从早期的集中式单体系统逐步演变为以水平扩展为核心的分布式体系。通过引入数据分片、副本容错、共识算法(如Paxos/Raft)等技术,解决了单点故障与性能瓶颈。随后,微服务、容器化(如Kubernetes)和云原生技术进一步推动架构解耦与弹性伸缩,而Serverless与边缘计算则拓展了分布式边界。如今,结合AI与大数据,分布式架构正朝着智能化、自适应方向演进,成为支撑全球数字化浪潮的核心基石。

### OceanBase 数据库高可用性方案及最佳实践 OceanBase 是一款分布式关系型数据库,具有高可用性、高性能以及水平扩展能力等特点。其高可用性主要依赖于多副本机制灵活的存储方案来实现。 #### 1. **多副本机制** OceanBase 使用 Paxos 协议来保证数据的一致性可靠性。Paxos 协议的核心在于通过多个副本之间的投票选举机制,确保即使部分节点发生故障,整个集群仍然可以正常运行并保持一致性[^2]。通常情况下,OceanBase 至少会维护三个副本(Leader 两个 Follower),其中 Leader 负责处理读写请求,而 Follower 则负责同步数据。当 Leader 发生故障时,Follower 中的一个会被选为新的 Leader 继续提供服务。 #### 2. **本地硬盘 + 多副本模式** 这是 OceanBase 推荐的标准存储方案之一。在这种模式下,每台服务器都配备独立的本地硬盘用于存储数据副本。由于采用了多副本策略,即便某一台机器宕机或者磁盘损坏,其他副本仍可继续工作,从而保障系统的高可用性。此外,这种架构还能够有效降低对外部共享存储设备的依赖程度,减少单点故障风险。 #### 3. **外部共享存储支持** 除了利用本地硬盘外,OceanBase 还允许接入第三方 NAS/SAN 等类型的集中式存储设施作为后台介质载体。不过需要注意的是,采用这种方式可能会稍微增加网络延迟时间,并且如果该类公共资源池本身存在隐患,则同样会影响到整体稳定性表现。 #### 4. **全局一致性视图** 为了进一步增强跨地域部署场景下的业务连续性保护效果,OceanBase 提供了基于 Region 的分区功能。用户可以根据实际需求定义不同地理区域内的子集群组,并设置相应的同步级别参数(如强一致、最终一致等)。这样一来,既满足了近距离交互效率的要求,又兼顾到了远距离灾备恢复的能力需求[^1]。 #### 5. **定期备份与灾难恢复计划** 尽管上述措施能够在很大程度上提高系统抵御意外事件冲击的实力,但仍需制定完善的应急响应预案以应对极端情况的发生。建议按照预定周期执行全量/增量方式相结合的数据拷贝操作,并妥善保存至安全位置;同时也要经常演练各类可能涉及切换流程的实际案例,以便真正遇到问题时能够迅速做出反应[^4]。 ```bash obclient -h<host> -u<username>@<tenant_name> -p<password> -- 执行相关命令完成手动测试验证过程... ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值