Oracle Database 23ai 新特性:全球分布式数据库支持Raft复制

2024年 5月 9日 65.0k 0

分布式数据库因其管理大型复杂数据集的能力、可伸缩性、灵活性以及与现代应用程序设计和架构的兼容性而越来越受欢迎。对全球部署和横向扩展的需求、对数据主权的要求正在推动企业采用Oracle全球分布式数据库。Oracle全球分布式数据库作为一个单一逻辑数据库,可将数据自动分散到多个物理数据库(分片)上,在企业内部、云或多云环境的不同计算机上部署;它是支持全球分布式、线性可扩展的多模数据库,不需要专门的硬件或软件;在实现所有这些功能的同时,还提供了强大的一致性、SQL处理能力、多模态数据管理以及 Oracle 数据库生态系统;它满足数据主权要求,并支持需要低延迟和高可用性的应用程序。

Oracle Database 23ai 新特性:全球分布式数据库支持Raft复制-1

在分布式数据库扩展时,弹性与可用性是重要的考虑因素,因为企业需要努力保证在整个可用区/可用性域 (AZ/AD) 或云提供商发生故障时业务仍可正常运行。近日,Oracle新发布的Oracle Database 23ai中引入了一个值得注意的功能:Raft复制,这是一种基于共识的复制协议,有助于跨所有分片自动配置复制。Raft复制与应用程序无缝集成,提供操作透明度。Oracle全球分布式数据库内置Raft复制功能,无需配置和管理 Oracle Data Guard 或 Oracle GoldenGate 即可实现高可用性。与Data Guard 或GoldenGate复制不同,在添加或删除分片时无需重新配置Raft复制,也无需主动管理副本;Raft 复制会在分片主机发生故障时或在分片数据库中增删分片时自动重新配置复制。系统采用声明性方法来配置复制因子,确保指定数量的副本始终可用。Raft 复制的一个重要特性是可实现快速自动故障转移,且不会丢失任何数据。如果所有分片都位于同一数据中心,则能实现亚秒级故障转移。Raft 复制处于活动/活动状态;每个分片都可以处理数据子集的读写。此功能提供统一配置,没有主分片或备用分片。复制单元(RU)启用 Raft 复制后,Oracle全球分布式数据库包含多个RU(复制单元)。RU是一组具有相同复制拓扑的区块。每个 RU 都有三个副本放置在不同的分片上。Raft共识协议用于在发生故障、网络分裂、消息丢失或延迟时保持副本间的一致性。每个分片都包含来自多个 RU 的副本。这些副本中有些是领导者,有些是追随者。Raft复制试图在分片中保持领导者和追随者的平衡分布。默认每个分片是两个RU的领导者,并且是其他四个RU的追随者。这使所有分片都处于活动状态,并可充分利用硬件资源。Raft 组每个复制单元只包含一个块集,并具有一个领导者和一组追随者,这些成员形成一个 raft 组。在不同分片中,复制单元的领导者及其追随者包含相同块集的副本,如下图所示。分片可以是某些复制单元的领导者,也可以是其他复制单元的追随者。特定数据子集的所有DML操作首先在领导者中执行,然后复制到其追随者。

Oracle Database 23ai 新特性:全球分布式数据库支持Raft复制-2

复制因子复制因子 (RF) 决定了 RAFT 组中的参与者数量。这个数字包括领导者及其追随者。RU需要在多数副本可用时才能执行写操作。RF = 3: 容忍一个副本失败RF = 5: 容忍两个副本故障在 Oracle 全球分布式数据库中,为整个分片数据库指定了复制因子,即数据库中的所有复制单元都具有相同的 RF。追随者的数量限制为两个,因此复制因子为3。Raft日志每个RU都与一组Raft日志和操作系统进程相关联,这些进程维护Raft日志并将更改从领导者复制到追随者。这允许多个 RU在单个分片内和多个分片间独立并行运行。它还可以通过更改 RU 的数量来扩展和缩减复制。DML 对数据所做的更改记录在 Raft日志中,提交记录也会记录在每个用户事务的末尾。Raft日志独立于重做日志进行维护,并包含对行的逻辑更改。逻辑复制减少了故障转移时间,因为追随者对传入事务持开放态度,并且可以快速成为领导者。Raft协议保证追随者以领导者生成日志记录的相同顺序接收日志记录。只要有一半的追随者确认收到提交记录并将其写入 Raft 日志,就会在领导者上提交用户事务。交易在繁忙的系统上,会同时确认多个提交。事务提交记录的同步传播提供零数据丢失。但是,将 DML 更改记录应用于追随者是异步完成的,以尽可能减少对事务延迟的影响。
领导者选举流程根据 Raft 协议,如果追随者在指定的时间段内没有收到来自领导者的数据或心跳,则开始新的领导者选举流程。默认心跳间隔时间为 150 毫秒,随机选举超时(最多150 毫秒)可防止多个分片同时触发选举,从而导致分裂投票。节点故障节点故障和恢复以自动化方式处理,对应用程序的影响极小。当可用区之间的网络延迟小于10毫秒时,故障转移时间不到3秒;这包括故障检测、分片故障转移、领导者变更、应用程序重连到新领导者,以及继续业务交易。通过在 JDBC 驱动程序中配置重试,可以进一步减少对应用程序的影响,客户的体验将是请求耗时更长,而不是报错。下面是一个分布式数据库的图示,其中所有三个分片都处于正常状态。应用程序请求能够到达所有三个分片,并且领导者和追随者之间的复制正在分片间进行。

Oracle Database 23ai 新特性:全球分布式数据库支持Raft复制-3

领导者节点故障当复制单元的领导者不可用时,追随者将使用 Raft 协议启动新的领导者选举流程。只要大多数节点(仲裁)仍然正常,Raft 协议将确保从可用节点中选出新的领导者。当其中一个追随者成功成为新的领导者时,会主动向领导变更的客户端驱动程序发送通知,客户端驱动程序后续会将请求路由到新的领导者分片。路由客户端(如UCP)通过ONS收到通知,以更新其分片和块映射,确保它们将流量路由到领导者。在此故障转移和重新连接期间,应用程序可以配置为等待和重试,并使用 JDBC 驱动程序配置中的重试间隔和重试计数设置。这些配置与当前的 RAC 实例故障转移配置非常相似。连接到新的领导者后,应用程序将继续像以前一样运行。下图显示第一个分片失败,复制单元的原领导者(曾经位于第一个分片上)已被第二个分片中的新领导者替换。

Oracle Database 23ai 新特性:全球分布式数据库支持Raft复制-4

Oracle全球分布式数据库在GDSCTL CLI中提供了命令和选项,用于在系统管理的分片数据库中启用和管理 Raft 复制。有关配置和管理 Raft 复制的详细内容请参阅Raft复制配置和管理官方文档[1]。采用 Raft 的 Oracle 全球分布式数据库Oracle全球分布式数据库作为一个单一逻辑数据库,支持数据在物理数据库之间分布和复制,以实现超大规模和容错,为用户提供极致的扩展性和业务连续性;同时可以将不同地区数据存储在不同的特定地理位置,从而满足数据主权需求,帮助企业实现全球化部署。在23ai中,Oracle全球分布式数据库内置Raft复制,将数据库内部的复制与基于 Raft 的协议相集成,简化了容错分布式数据库的创建和管理,并减少了维护多活可用性时需要的手动流程,可在几秒内实现自动故障转移,且不会丢失任何数据。Oracle 可以跨本地、云和多云部署分片;Oracle云中还为用户提供全球分布式自治数据库服务,消除分布式数据库的运营复杂性并降低成本。如需了解有关 Oracle 全球分布式数据库的更多信息,请您访问全球分布式数据库官方网页[2]。参考链接:[1] https://docs.oracle.com/en/database/oracle/oracle-database/23/shard/raft-replication.html[2] https://www.oracle.com/database/distributed-database/

编辑:萧宇Oracle Database 23ai 新特性:全球分布式数据库支持Raft复制-5

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论