写点什么

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

评论

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

区块链技术如何赋能医学成像?

CECBC

Bi Token质押挖矿软件系统开发方案

INS视频怎么保存 (2021最新图文教程)

资源君

方法 经验分享 教程 资源分享 Instagram

AI框架中图层IR的分析

华为云开发者联盟

mindspore IR

千亿级数据迁移 mongodb 成本节省及性能优化实践(附性能对比质疑解答)

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

泪目!跳槽太不容易,蚂蚁金服三轮面试,四个小时灵魂拷问

Java 面试

2021Android高级面试题及答案,Android篇

欢喜学安卓

android 程序员 面试 移动开发

圆梦腾讯之路!6面阿里、5面字节、4面腾讯,终斩腾讯Offer

Java 编程 架构 面试

秀出天际的SpringBoot笔记,让开发像搭积木一样简单

在C++中,你真的会用new吗?

华为云开发者联盟

c++ 内存 new new operator operator new

7月日更,红心向党,党员入驻,即送马克杯~

InfoQ写作社区官方

7月日更 热门活动

区块链的正确应用方式与前景

CECBC

企业资产数据大屏,打破固有管理思维僵局,杜绝资产无效流失

一只数据鲸鱼

数据可视化 资产管理 金融资产 金融大屏

你不知道的 Linux 使用技巧

学神来啦

2021Android高级进阶学习资料,已拿意向书!

欢喜学安卓

android 程序员 面试 移动开发

GaussDB(for Redis)揭秘:Redis存算分离架构最全解析

华为云开发者联盟

redis 华为云 GaussDB(for Redis) 存算分离架构 中国系统架构师大会SACC

UC生态系统APP开发详情

智安小区建设,智慧安防小区改造建设方案

Test

bobcatzoo

「腾讯面试题」兔子试毒

Java架构师迁哥

测量电压调节器输出纹波和开关瞬变的方法

不脱发的程序猿

硬件研发 输出纹波测量 开关瞬变测量 电源测试 测量电压调节器

百度工程师手把手教你实现代码规范检测工具

百度开发者中心

百度 代码规范

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

Java 编程 程序员 架构 面试

Tubacle挖矿系统APP开发搭建

DOLLAR CAT/Dcat币挖矿系统开发

BTQQ挖矿/比特全球/BT全球系统APP开发简介

anyRTC视频连麦demo上线啦!

anyRTC开发者

音视频 WebRTC 直播 视频直播 直播连麦

扩展ADO.net实现对象化CRUD(.net core/framework)

Spook

.net ORM ado

话题王者第三季,舍我其谁~

InfoQ写作社区官方

话题讨论 热门活动

蜜蜂圈软件开发|蜜蜂圈APP系统开发

看CarbonData如何用四招助力Apache Spark

华为云开发者联盟

spark Apache Spark ACID CarbonData 分布式集群计算框架

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