介绍
你是否曾想过,当全球业务面临数据灾难时,如何确保秒级响应?Uber给出了答案!通过先进的存储技术,Uber将实时业务数据存储于开源数据库如MySQL、Apache Cassandra、etcd和Zookeeper,以及自研方案如Docstore和Schemaless。数据库备份恢复不仅是业务连续性的基石,更支撑着中断缓解、数据恢复、合规审计及生产环境模拟等多重场景。
Uber的在线存储系统承载数十PB数据,每秒处理数百万至数十亿请求,覆盖全球业务。在这一规模下,系统能以分钟到小时级速度恢复TB至PB级数据,实现近100PB数据的定期备份。
本文将深入解析Uber如何构建强大的备份恢复系统,应对极端挑战。
挑战
大规模升级备份恢复系统曾面临多重难关:
原始的备份调度:早期备份依赖简单周期执行,无视网络、主机资源及优先级,导致负载峰值波动,恢复缓慢而低效。临时恢复流程:恢复流程依赖零散脚本或陈旧手册,随着系统升级极易失效,缺乏标准化。缺乏恢复演练:无定期测试机制,恢复功能无法保障,风险潜伏。新的恢复目标:过去RPO长达7-21天,RTO不确定或需数天。经优化后,RPO缩短至4-24小时,RTO提升至每小时300TB,实现飞跃。
为攻克这些难题,Uber推出了一系列创新优化。
架构
Uber有状态平台上的增强型备份恢复系统,通过统一管理备份恢复生态,提供无缝体验。它包括自适应调度备份、状态监控及定期恢复测试,构建了持续的备份恢复(CBCR)框架。
系统采用快照架构管理有状态集群,大幅提升灾难恢复能力。
图 1:有状态集群的连续备份恢复
系统核心组件包括:
持续备份:集中协调器,智能调度备份,分散工作负载,确保网络可靠。持续恢复:集中协调器,定期测试恢复,验证备份完整性,保障健康运行。备份框架:通用驱动集成技术插件,执行快照并上传至Blob存储。恢复框架:统一驱动集成插件,下载备份并加载至数据库。技术主流工作负载:有状态技术核心组件,如管理器/工作节点,遵循目标状态驱动架构。Uber Blobstore:支持大规模上传/下载的对象存储后端,可虚拟化多云存储。
持续备份
持续备份功能确保所有数据库备份既频繁又可靠,同时优化存储与网络成本。
Time Machine作为关键协调器,运行全局自适应调度器,每日处理数PB数据。面对共享网络带宽的挑战,它智能调度备份,避免服务中断。
Time Machine的最优选择引擎综合多种信号决策:
备份新鲜度动态网络与主机资源可用性历史备份趋势企业网络高峰时段技术特定备份策略与关键数据库优先级地理分布与利用率
通过智能调度,系统高效分配备份任务,确保可靠性与完整性。
图 2:有状态平台上的持续备份
备份流程三步走:
持续备份的全局调度器定期运行,分发现、选择、触发三阶段。发现阶段扫描全集群,收集可备份数据库。选择阶段应用筛选排序规则,确定最终备份集。触发阶段决定备份模式,调用技术特定工作负载。技术插件接口支持各类操作,如元数据管理和集群状态跟踪。对于每次备份,技术特定管理器协调工作负载,验证完整性并同步状态。各存储技术执行快照逻辑,上传至Blob存储。
备份框架
图 3:备份框架控制流程
备份框架作为通用驱动,集成技术插件,以边车容器形式运行,确保高效上传。
流程如下:
节点工作进程编排数据库健康,监控备份生命周期。备份驱动提取快照文件,增量上传并记录索引。上传后清理文件,避免磁盘激增。备份索引推至Blob存储,支持文件去重,构建增量备份。驱动监控资源使用,防止生产中断,最终同步状态至元数据存储。
各技术快照逻辑各异:
MySQL系使用Percona Xtrabackup,支持差异备份。Cassandra采用类似Medusa的差异设置与nodetool快照。etcd通过etcd-clientv3获取时间点快照。Zookeeper备份最新snapshot文件。
恢复框架
恢复框架设计技术无关,实现自动化一致恢复。其模块化扩展性强,缩短恢复时间,降低人为错误。
框架提供通用驱动与插件,定义清单提供与数据库加载逻辑。清单插件获取备份索引,加载逻辑适配MySQL、Cassandra、etcd等架构。
各技术加载过程:
MySQL使用Percona XtraBackup准备备份启动。Cassandra下载SSTable文件并加载。etcd/Zookeeper将快照置入指定目录,利用快照加载器。
图 4:恢复框架控制流
恢复框架与持续恢复集成,持续验证真实场景。
持续恢复
持续恢复框架通过频繁验证备份,确保数据正确性。它支持智能调度,避免生产影响。
测试策略分专用与随机数据库测试:专用测试详实验证;随机测试在真实环境广泛验证。
恢复后执行强大验证,包括文件完整性与数据比对。框架收集分析数据,报告成功率、性能指标等。
修复评估四阶段:
发现/选择:基于层级、大小等标准识别数据库,应用过滤优先级规则均衡负载。触发阶段:创建临时集群测试恢复,利用可扩展框架执行操作。验证:按策略验证,专用库数据比对,随机库检查完整性。报告:生成详细报告,清理临时资源。
图 5:有状态集群中的持续恢复框架
持续恢复优势显著:
运行弹性:提升系统恢复力,降低停机风险。合规和审计支持:自动报告满足合规需求。数据保障:验证数据完整性与过程,提高可靠性。可操作的见解:提供性能可见性,指引优化方向。
通过持续验证,Uber强化了灾难准备,保护关键数据,增强大规模恢复能力。
你是否也想打造如此强大的备份恢复系统?分享你的见解,加入技术讨论!
作者丨Uber Backend 编译丨Rio
来源丨网址:https://www.uber.com/blog/robust-database-backup-recovery-at-uber/?uclick_id=1710c187-26ed-4c1b-9134-278f616291e7
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
相关问答
什么是数据库恢复,恢复的实现技术有那些?
数据库管理系统把数据库从某种错误状态恢复到完整状态就叫做数据库恢复:它的实现技术数据转储和登录日志文件。数据库管理系统把数据库从某种错误状态恢复到...
为何要使用数据库的备份和还原-ZOL问答
2、数据还原:就是数据库出现错误或者是崩溃了不可以用,就把原来的数据恢复回来。3、提高系统的可用性和灾难可恢复性,在数据库系统崩溃的时候,可以恢复数据。...
数据库备份与恢复方法指南-ZOL问答
每种数据库系统都有其独特的备份与恢复工具和操作流程。以下是一个通用的步骤指南:备份过程:1.选择备份类型:根据需求选择完整备份、差异备份或事务日志备份...
数据库恢复和备份的方法?
下面是数据库恢复和备份的一些常见方法:数据库备份方法:1.定期完整备份:定期执行完整备份,将整个数据库的数据和结构保存到一个独立的存储位置,例如硬盘...
SQL数据库如何还原?
以前不知道总结,学一点忘一点。时间长了,也就不知道自己会什么了?sqlserver的备份文件是以.bak结尾第一步,新建数据库。第二步,选中新建数据库右键,...以...
数据库恢复问题1.我们令“事务T把数据库中的数据项A...
数据库恢复问题首先,我们令“事务T把数据库中的数据项A的值由原来的100改成200”,其在日志2.在系统崩溃后,数据库的恢复可分为redo(重做)和undo(撤销)两个阶段...
服务器数据库被删怎么恢复?
以下是一些可能的恢复方法:1.数据库备份:如果您有数据库备份,您可以使用备份文件来恢复您的数据。您可以将备份文件还原到您...您好,如果服务器数据库被删...
如何还原sql数据库-懂得
是可以回复的,网站的网页就不用说了,重新部署在机器上就可以。至于数据库的话,既然你把C:\ProgramFiles\MicrosoftSQLServer\MSSQL下面的内容统统的...
SQLServer2014数据库如何还原到SQLServer2008R2?
1、右键选择系统数据库,并点击弹出菜单中的“还原数据库”。2、在弹出的还原数据库对话框中,点击设备,并点击右侧的三个点。3、然后在弹出来的界面中选择添...
如何将sqlserver2000的数据还原到sqlserver2008?
将SQLServer2000的数据还原到SQLServer2008,可以按照以下步骤进行:1.在SQLServer2000中备份数据库在SQLServer2000中...