2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

优步借助 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:039472

评论

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

微信架构简析和学生系统初步方案

Bear

「架构实战营」

什么时候该减少质量投入?

QualityFocus

质量管理 软件测试 测试思维

Centos7下Nginx编译安装与脚本安装的记录

edd

实现一个任务调度系统,看这篇文章就够了

勇哥java实战分享

Elastic-job XXL-JOB 任务调度 自主研发

微信朋友圈架构设计

刘洋

#架构实战营

☕【Java深层系列】「并发编程系列」深入分析和研究MappedByteBuffer的实现原理和开发指南

码界西柚

Java 文件I/O MappedByteBuffer FileChannel 1月日更

模块六作业

novoer

「架构实战营」

LabVIEW仪表盘识别(实战篇—6)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 仪表盘识别

架构实战营5期模块1作业

lovles

「架构实战营」

小程序电商业务微服务拆分及基础设施选型

swallowluo

架构实战营 #架构实战营 「架构实战营」

ReactNative进阶(三十六):ES8 中 async 与 await 使用方法详解

No Silver Bullet

Async React Native await 1月月更

架构图 - 微信 & 学生管理系统

Ntropy

架构实战营

模块一作业--

Leo

「架构实战营」

Android Studio开发flutter快捷键及文本显示技巧。

坚果

flutter 1月月更

微信业务架构 & 学生管理系统架构

凌波微步

「架构实战营」

我的架构学习之始

浪飞

华山论“件”:Kafka、RabbitMQ、RocketMQ技能大比拼

华为云开发者联盟

kafka RocketMQ RabbitMQ 华为云 消息中间件

华为云FusionInsight连续三次获得第一,加速释放数据要素价值

华为云开发者联盟

大数据 数据湖 云原生 FusionInsight 华为云

获奖作品公布,快来看看有没有你!

InfoQ写作社区官方

新春征文 热门活动

数据治理平台化的通用框架设计

小鲸数据

JavaScript 之 Proxy

编程三昧

JavaScript 前端 Proxy 1月月更

架构设计小试牛刀

Fingal

架构实战营

[架构实战营]-架构实训一

邹玉麒

「架构实战营」

音视频技术如何为元宇宙提供全真稳的全新体验之漫话腾讯云音视频 | 社区征文

liuzhen007

音视频 1月月更 新春征文

WorkPlus赋能数字政府迈入发展新阶段

BeeWorks

第一次作业

Mr小公熊

LabVIEW实现PCB电路板元器件匹配定位(实战篇—7)

不脱发的程序猿

计算机视觉 图像处理 LabVIEW PCB电路板元器件匹配定位

架构训练营模块一作业

苍狼

「架构实战营」模块一作业

hxb

「架构实战营」

写了这么多年后端,你知道事务脚本模式吗?

蜜糖的代码注释

Java 互联网 后端

一起玩转LiteOS组件:TinyFrame

华为云开发者联盟

LiteOS 串口 LiteOS组件 TinyFrame

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