写点什么

优步借助 MyRocks 差异备份显著节省了存储成本

作者:Matt Saunders

  • 2024-12-05
    北京
  • 本文字数:1529 字

    阅读完需:约 5 分钟

优步借助 MyRocks 差异备份显著节省了存储成本

据其博客的文章介绍,优步(Uber)已经成功地为其分布式数据库实施了一个新的差异备份(Differential Backup)系统,该系统使存储成本降低了 70%。


优步(Uber)工程师开发这一解决方案,是为了应对优步(Uber)将其 Schemaless 和 Docstore 服务的存储迁移到基于 RocksDB 的 MySQL 存储引擎 MyRocks 后出现了存储成本上升和备份完成时间过长的问题。


在优步(Uber),Schemaless 和 Docstore 分布式数据库处理数十 PB 的运营数据,每秒处理数千万个请求。这些数据库对优步(Uber)的全球运营至关重要,用以支持各种业务功能并确保业务的连续性。


当优步(Uber)团队将存储平台迁移到 MyRocks 时出现了问题,尽管 MyRocks 针对写入操作和存储效率进行了优化,但缺乏对增量备份(Incremental Backup)的支持。这种限制意味着每个数据库分区每次都需要进行完全备份(Full Backup),这导致了大量的重复数据存储并增加了 blob 存储成本。


新的差异备份(Differential Backup)系统利用了 MyRocks SSTable 文件的不可变特性,这些文件在连续备份之间通常保持不变。系统不会在每次备份期间复制所有文件,而是维护一个共享的 SSTable 文件池,并且只将新创建的文件添加到该共享池中。清单文件通过记录包含的文件列表来定义每个备份,因此可以在需要时进行高效地恢复。


Adithya Reddy 在一篇 技术博客 中详细介绍了该解决方案,该系统的工作原理是首先执行初始的完全备份,将所有元数据和 SSTable 文件存储在 blob 存储区内的共享池中。后续差异备份仅将新的 SSTable 文件添加到共享池中,同时重用之前备份中的现有文件。



备份清单文件以 JSON 文档的形式实现的,用以跟踪基本信息,包括备份类型、成功状态、计时详细信息和文件校验和。该清单用作备份的索引,并为恢复过程提供必要的信息。


新系统由一个称为 Backup Scheduler 的无状态服务管理。Backup Scheduler 根据分区备份状态确定备份的时间和频率。实际的备份过程由临时备份容器处理,当需要使用 Percona XtraBackup 工具执行备份时,这些容器就会被激活。


虽然系统主要执行差异备份,但在某些情况下仍需要完全备份,例如:


  • 当备份在生产环境中首次运行时

  • 当上一个分区节点变得不适合使用时

  • 在 MyRocks 版本升级之前

  • 当现有备份池达到差异备份上限时


备份系统继续使用已建立的 Percona XtraBackup 工具进行备份和恢复过程,在添加新的差异备份功能的同时保持与现有系统的兼容性。这种方法使优步(Uber)能够在不需要对其更广泛的数据库基础设施进行大量更改的情况下实施改进。


尽管存在这些限制,但改进仍然很显著。优步(Uber)报告称,大多数实例的数据存储平均减少了 45%,一些较大的实例的每次差异备份的存储成本减少了 70% 或更多。备份过程的速度也得到了显著的提高,完全备份的完成速度比以前快两倍,差异备份的完成时间缩短了五倍。


MyRocks 最初是由 Facebook(现在的 Meta)开发的,目的是为 RocksDB 添加复制和 SQL 层。2016 年,Facebook 将其用户数据库迁移至 MyRocks。RocksDB——MyRocks 背后的底层存储引擎——也被其他组织采用,一些用户声称性能提高了三倍,Percona 发布的基准测试也显示,它的性能与 InnoDB 相比有了显著的改进。然而,对于某些用例,有报道称 RocksDB 在检索方面的表现不如 InnoDB。

作者介绍


Matt Saunders 是 Adaptavist 的首席技术官 DevOps 主管。他帮助团队使用 DevOps、平台工程和云原生工具和技术,快速高效地交付质量可靠的软件,同时将压力降到最低。他曾与复杂的企业、小型初创企业、中小企业以及介于两者之间的所有企业合作过。还联合组织了伦敦 DevOps 聚会小组,该小组拥有 10000 多名成员,每月举办一次非常受欢迎的行业活动。


查看原文链接:

https://www.infoq.com/news/2024/11/uber-myrocks-backups/

2024-12-05 08:038874

评论

发布
暂无评论
发现更多内容

架构师训练营 - 第六周作业

一个节点

极客大学架构师训练营

架构师训练营第 1 期 - 第 6 周 - 学习总结

wgl

6.1分布式关系数据库(上)

张荣召

11/1-第二周-作业

张冬冬

学习

第 6 周 是这么玩的???

Pyr0man1ac

技术选型(2)课后作业

ABS

第六周总结

_

极客大学架构师训练营 第六周总结

week6

张兵

极客大学架构师训练营

架构师二期第二周作业

supersky6

作业

第六周 技术选型 学习总结

应鹏

学习 极客大学架构师训练营

1.请简述 CAP 原理。

张荣召

MULE 无法接收TCP报文问题分析

东风微鸣

APM

架构师训练营 1 期第 6 周:技术选型(二) - 作业

灵霄

极客大学架构师训练营

第六周总结

第 5 周 这东西也有标准化答案???

Pyr0man1ac

架构师训练营第六周命题作业

一马行千里

极客大学架构师训练营 命题作业

第六周课后总结

天天向上

极客大学架构师训练营

第六周 技术选型 作业一

应鹏

极客大学架构师训练营

架构师训练营第二周学习总结

张小胖

极客大学架构师训练营

框架设计原则

笨笨程序猿

架构设计 极客大学架构师训练营 接口隔离

第六周作业

碎碎念

大头虾

算法训练营第二期:第二周总结

xiaomao

依赖倒置原则、接口隔离原则优化类的设计

极客大学架构师训练营

与前端训练营的日子--Week01

SamGo

学习

架构师训练营第 1 期 - 第 6 周 - 命题作业

wgl

week2学习总结

幸福小子

第六周作业

熊桂平

极客大学架构师训练营

Week 2 :框架设计(作业一)

Sean Chen

架构师训练营第二期 - 第二周课后练习

xiaomao

架构师训练营第 1 期第 6 周总结

owl

极客大学架构师训练营

优步借助 MyRocks 差异备份显著节省了存储成本_数据库_InfoQ精选文章