OceanBase 是如何实现高可用的

数据库在 IT 架构中承担数据存储和查询的功能,其正常运行对企业数据安全和业务连续性起着至关重要的作用。

  • 传统数据库通常采用HA或RAC架构来实现高可用,这类架构是我们通常所说的“Share Everything",虽然能够通过冗余计算节点来规避计算资源的单点,但数据库只有一个,只能依赖底层存储的冗余来保证数据的安全。但存储本身也是一个集中式的设备,一旦出现问题对数据库来说是毁灭性的影响;
  • 分布式数据库采用存储和计算节点分离的架构,通过多副本机制将数据分散在不同的节点,即使部分节点故障,仍然可以从其他节点获取到数据。相比传统集中式架构,分布式架构数据散落在多个存储节点上,因此这种架构也被称为“Share Nothing”。

OceanBase 是一款分布式架构的数据库,因此其设计理念也遵循上述的分布式架构特点,但是在技术实现上仍然有其特有之处。这篇文章就来说说,OceanBase 是如何实现高可用的。

物理架构和高可用

从物理上看,OceanBase 数据库集群由若干个可用区 (Zone) 组成,Zone 代表了一组服务器的物理位置分布。不同的 Zone 可以是异地或同城的数据中心,也可以是同一个数据中心不同的机架。Zone 由一到多台服务器 (OB Server) 构成,每个 Zone 都有一份且只有一份完整的数据副本,单个 Zone 出现故障时可能通过其他副本获取数据,为了避免集群分裂时出现对等数量的子集,Zone 通常建议配置为奇数数量。
在这里插入图片描述

OB Server 提供独立的计算和存储资源,每台服务器都是对等的。当部分OB Server故障无法提供正常服务时,上层的 OBProxy 能感知到故障节点并将相应的路由切换到正常的镜像节点上。

数据管理和高可用

OceanBase 是分布式数据库,逻辑层面的高可用主要通过数据多副本来实现。

OB 将资源分配单位定义为 UNIT,UNIT 类似于一个 docker 容器,描述了位于一台 Server 上的一组计算资源 (CPU 和内存) 和存储资源,每个 UNIT 只能属于一个租户。

资源池由一个或多个 UNIT 组成,这些资源来自每个Zone中的服务器节点。资源池被分配给相应的租户,数据库则创建在相应的租户。

在这里插入图片描述

在OceanBase数据库内部,一个表的数据可以按照某种规则水平拆分为多个分片,每个分片称之为一个表分区。表分区的数据会在租户创建时指定的每个 Zone 上保存一份数据,称为副本。这些副本仅有一个允许对外读写,叫做主副本 (Leader),其他副本叫做从副本 (Follower),主从副本之间通过 Paxos 分布式协议进行数据同步,确保数据的一致性。当主副本所在的节点发生故障时,其中一个从副本被选举为新的主副本并继续提供服务。

应用访问高可用

OceanBase 上层还有一个 OB Proxy 的组件,应用通过该组件连接到 OB 数据库。

OB Proxy 是一个无状态的服务进程,不参与数据库引擎的计算任务,也不参与事务处理。仅对 SQL 语句做基础解析,确定对应的 Leader 所在位置,并将请求路由到对应的 Leader 上,从而实现应用的透明访问。

OB Proxy 不做数据持久化,既可以独立部署,也可以和 OB Server 部署在同一台服务器。为了实现该组件的高可用,通常会在一套集群中部署 3 个节点,前端再加上 F5 组成负载均衡集群。

写在最后

高可用是分布式架构设计最原始的目标,以小型机和存储为代表集中式架构成本高昂,因此人们想用价格相对低廉的 PC 服务器来替代集中式架构。但彼时的 PC 服务器可靠性和小型机差距甚远,为了规避硬件风险设计了分布式架构。分布式架构没有中心节点,各节点之间没有强依赖关系,同时每个组件又有冗余,架构上不存在单点的隐患。

具体到 OceanBase 数据库,从上层的 OB Proxy,到物理节点架构的 Zone,以及数据存储副本,每个环节都有相应的冗余保护机制,少量的节点损坏并不会影响整个集群的正常工作。

集群组件各司其职,但又相互协同构成一个有机的整体,这大概是分布式最有魅力的地方吧!

### 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、付费专栏及课程。

余额充值