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

Meta切换到 MySQL Raft以提高可靠性和操作简单性

云原生数据库 2023-05-23
69

Meta 正在其数据中心推出 MySQL Raft以取代其当前的 MySQL 半同步数据库。

作为全球最大的MySQL部署之一,Meta的MySQL数据存储是一个大规模分片的地理复制部署,拥有数百万个分片。该集群支持社交图谱和诸如消息、广告和动态信息等服务,存储了数PB的数据,在多个地区和数据中心的数千台服务器上运行。Meta的软件和生产工程师Anirban Rahut、Abhinav Sharma、Yichen Shen和Ahsanul Haque解释说:
”在过去的几年里,我们实现了 MySQL Raft,这是一个 Raft 共识引擎,与 MySQL 集成以构建复制状态机。我们已经将大部分部署迁移到 MySQL Raft,并计划用它完全替换当前的 MySQL 半同步数据库。“

据团队介绍,新的MySQL部署提供了更高的可靠性、可证明的安全性、显著改进的故障切换时间以及操作简便性,同时没有影响写入性能。

之前,Meta使用了MySQL半同步(semisync)复制协议进行复制。主服务器会使用半同步复制将数据复制到位于同一主服务器区域内的两个日志副本(logtailers),以实现亚毫秒级的延迟。然后,使用常规的MySQL主-备异步复制将数据分发到其他区域。团队解释了他们所面临的挑战:
”为了在复杂的升级和故障转移操作期间帮助确保安全并避免数据丢失,一些自动化守护进程和脚本将使用锁定、编排步骤、防护机制和服务发现系统 SMC。这是一个分布式设置,很难以原子方式完成。随着越来越多的极端情况需要修补,随着时间的推移,自动化变得越来越复杂和难以维护。“

该团队决定采用一种全新的方法,增强 MySQL 并使其成为一个真正的分布式系统:Meta 切换到 Raft,控制平面和数据平面操作部分位于同一复制日志中。Mark Callaghan,之前是 Facebook 的 MTS 和 Mongo 的杰出工程师,评论道:

”MySQL + Raft 就像花生酱和果冻或披萨、火腿和菠萝一样。“

Databricks 的高级主管 Shrikanth Shankar强调了变化的复杂性:

”人们开玩笑说在飞机飞行时更换飞机发动机,但这就是这个项目的目的。感谢团队实现这一目标!“

Percona 的创始人兼开源倡导者 Peter Zaitsev反问道:

”为什么 Facebook 构建 MySQL Raft 而不是使用或改进 MySQL Group Replication?“

Raft for MySQL 基于Apache Kudu,Meta 根据 MySQL 的需要对其进行了修改,并发布了一个开源项目kuduraft。添加到kuduraft 的新功能是 FlexiRaft,一个支持两个不同的交叉仲裁的选项,以及代理,使用代理中间节点和减少网络带宽的能力。此外,压缩和日志抽象改进允许在分发和不同的物理日志文件实现之前压缩二进制日志有效负载。


本文由“云原生数据库”小编翻译。


文章转载自云原生数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论