Facebook如何实现PB级数据库自动化备份

文章讲的是Facebook如何实现PB级数据库自动化备份,Facebook的MySQL数据库,是世界上最庞大的MySQL数据库之一,在不同地区有数千个数据库服务器。因此,备份对他们来说是个巨大的挑战。为了解决这个问题,他们构建了一个高度自动化、非常有效的备份系统,每周移动多个PB的数据。Facebook数据团队的Eric Barrett通过一篇文章分享了他们的做法。

  他们没有采用大量前载(front-loaded)测试,而是强调快速检测失败,并且进行快速、自动化纠正。部署几百个数据库服务器,只需很少人力干预。使用下面的三个措施,他们做到了有节奏的增长,同时具备支持上十亿用户的灵活性。

  措施1:二进制日志和mysqldump

  第一道防线称为“措施1”,或“机架”备份(rack backup),简称RBU。在每个数据库机架上,不论其类型为何,都有两个RBU存储服务器。以RBU作为数据库服务器放在同一个机架中,这可以保证最大的带宽和最小的延迟,它们同时可以作为缓存,在备份的下个措施使用。

  收集二进制日志,是这些服务器的工作之一。二进制日志会不断以流形式,通过模拟从进程(simulated slave process)输送到RBU主机中。这样一来,不需要运行mysqld,RBU就可以接收到同样的更新作为复制版本。

  在RBU上保存同步的二进制日志很重要:如果一个主数据库服务器离线,该服务器上的用户将无法更新状态或是上传照片。出现问题后,他们需要保证修复时间越短越好。有可用的二进制日志,就能让他们在数秒内启动另一个数据库作为主数据库。由于RBU中有秒级的二进制日志,即使某个旧主数据库完全不可用,也没有关系,只要利用将记录下的事务恢复到上一个备份中即可完成立即恢复。

  RBU服务器的第二个工作是执行传统备份。MySQL备份有两种方式:二进制和逻辑(mysqldump)。Facebook使用逻辑备份,因为它与版本无关,提供更好的数据完整性,更紧凑,恢复起来更省事。不过,当为某个数据库构建全新复制时,他们仍然使用二进制拷贝。

  mysqldump的一个主要好处是:磁盘上的数据损坏不会影响到备份中。如果磁盘某个扇区出现问题,或是写入错误,InnoDB页面校验和就会出错。在组合备份流时,MySQL会从内存中读取正确的内容,或是去磁盘读取,然后遇到错误的校验和,停止备份(以及数据库进程)。mysqldump的问题是:污染用来缓存InnoDB块的LRU缓存。不过,新版本的MySQL中,会将LRU插入操作从扫描时放到缓存结束。

  对在自己权限范围内的所有数据库,每个RBU都有一个夜间备份。尽管有着天量级别的数据,Facebook的团队还是可以在几个小时内完成对所有数据的备份。

  如果RBU失败,自动化软件会将其职责分配给同一集群中其他系统。当它恢复上线后,职责会自动返回到最初的RBU主机。

  Facebook团队不会过分担心单个系统的数据保留问题,因为他们有措施2。

  措施2:Hadoop DFS

  在每个备份和二进制日志收集完成后,他们会马上将其复制到他们的大型定制化Hadoop集群中。这些集群是非常稳定的复制数据集,并有固定的保留时间。因为磁盘大小增长很快,较老的RBU可能不足以保存一到两天的备份。不过他们会按需要增长Hadoop集群,同时不需要担心底层硬件情况。Hadoop的分布式特性让他们有足够带宽,完成快速数据恢复。

  不久,他们会把非实时数据分析放到这些Hadoop集群中。这可以降低数据库中非关键读的次数,让Facebook网站的响应速度更快。

  措施3:长期存储

  每周,他们会从Hadoop备份移动到另一个地区的分散存储中。这些系统是最新而且安全的存储系统,在他们的日常数据管理工具流程之外。

  监控

  除常用的系统监控外,他们还会捕捉很多特定的统计数据,比如binlog集合延迟、系统容量等等。

  为备份失败打分,是他们最有价值的工具。因为Facebook的数据库和同时运行的维护任务量级,错过某些备份也不奇怪。广泛的失败和多日没有成功的单个备份,这都是他们要注意的重点。因此,某个错过备份的得分会随着时间呈指数级增长,这些得分的不同聚合,让团队能对备份的整体健康度有一个有效而快速的了解。

  比如,在一天内,某个数据错失一次备份,得1分,一天错失50次备份,就是50分。但在三天内的一次数据库错失,就是27分(3的3次幂),三天内50次,这是很严重的问题,得分就是1350(50乘以3的3次幂)。这会在他们的监控图上出现一个巨大的波峰,团队会马上对其采取行动。

  恢复

  在系统管理员中有句老话:“如果你没有测试过你的备份,就等于没有备份。”

  因此,Facebook团队构建了一个测试系统,会持续地从措施2开始,将数据恢复到测试服务器上。恢复完成后,他们会执行多次数据完整性检查。如果有任何反复出现的问题,系统就会报警,提醒相关人员关注、审核。该系统可以发现所有问题,包括MySQL的bug,到备份过程中的纰漏,并可以让他们更灵活地应对备份环境中的变化。

  他们构建了一个名为ORC(ORC恢复协调器的递归缩写)的系统,工程师如何需要恢复他们所用工具的数据库的过去版本,就可以以自服务方式使用该系统恢复数据。对于快速开发来说还是挺方便的。

  在结尾,Eric Barrett说道:

备份不是最迷人的工程工作。它们即是技术活,又是重复性的,如果一切正常,没人会注意。它们也是跨学科和团队的,需要懂得系统、网络和软件等多方面的专业知识。但是,确保你的记忆和联系安全无误,这是无比重要的事情,而且到最后,也是充满回报的事情。

  有网友问到:

在不运行mysqld的RBU上,你们如何完成二进制日志的流传送?什么是模拟从进程?

  Facebook的MySQL性能工程师Harrison Fisk给出了答案:

我们使用mysqlbinlog的–never–选项,并有一个用python开发的小包装程序,会监控并保证mysqlbinlog运行成功。

作者: 凌燕

来源:IT168

原文链接:Facebook如何实现PB级数据库自动化备份

时间: 2024-08-31 00:28:58

Facebook如何实现PB级数据库自动化备份的相关文章

Facebook如何实现PB级别数据库自动化备份

Facebook的MySQL数据库,是世界上最庞大的MySQL数据库之一,在不同地区有数千个数据库服务器.因此,备份对他们来说是个巨大的挑战.为了解决这个问题,他们构建了一个高度自动化.非常有效的备份系统,每周移动多个PB的数据.Facebook数据团队的Eric Barrett通过一篇文章分享了他们的做法. 他们没有采用大量前载(front-loaded)测试,而是强调快速检测失败,并且进行快速.自动化纠正.部署几百个数据库服务器,只需很少人力干预.使用下面的三个措施,他们做到了有节奏的增长,

Oracle数据库的备份及恢复策略研究

oracle|备份|策略|恢复|数据|数据库     摘 要 恢复丢失的数据库文件在很大程度上取决于所采用的备份策略.本文从恢复的灵活性出发,对Oracle8数据库的备份及恢复策略进行了探讨,并给出了Windows 2000环境下使备份过程自动化的脚本文件的项目开发实例. 关键词 Oracle 数据库 备份 恢复 引言 随着信息系统在各种商务活动中重要性的不断增强,维护系统数据的可用性已成为当前一个十分重要的课题.为了有效地保持健康的信息系统,必须采取一定的措施防止在由介质.操作系统.软件和其它

云存储使存储容量前所未有,起点是达PB级

本文讲的是云存储使存储容量前所未有,起点是达PB级,[IT168 资讯]云计算的兴起会颠覆现有的网络存储架构吗?现在还没有人能说得清这种变化何时会发生.不过可以肯定的是,云计算对存储容量.存储访问性能和成本等提出了前所未有的挑战. 云计算的兴起对于信息存储会产生哪些重要影响呢?EMC公司中国研发中心首席架构师任宇翔表示,"云存储的起点就应该是PB级." 集群存储兴起 IDC研究表明,从2006年到2010年,全球信息总量将增长6倍以上,从161EB增加到988EB(1EB=1024PB

Oracle数据库的备份及恢复策略研究_oracle

正在看的ORACLE教程是:Oracle数据库的备份及恢复策略研究. 摘 要 恢复丢失的数据库文件在很大程度上取决于所采用的备份策略.本文从恢复的灵活性出发,对Oracle8数据库的备份及恢复策略进行了探讨,并给出了Windows 2000环境下使备份过程自动化的脚本文件的项目开发实例. 关键词 Oracle 数据库 备份 恢复 引言 随着信息系统在各种商务活动中重要性的不断增强,维护系统数据的可用性已成为当前一个十分重要的课题.为了有效地保持健康的信息系统,必须采取一定的措施防止在由介质.操作

双11黑科技,阿里百万级服务器自动化运维系统StarAgent揭秘

导读:还记得那些年我们半夜爬起来重启服务器的黑暗历史吗?双11期间,阿里巴巴百万量级主机管理能安全.稳定.高效,如丝般顺滑是如何做到的?阿里巴巴运维中台技术专家宋意,首次直播揭秘阿里IT运维的基础设施StarAgent,详细分析StarAgent是如何支持百万级规模服务器管控?如何像生活中的水电煤一样,做好阿里运维的基础设施平台? 嘉宾介绍 宋健(宋意):阿里巴巴运维中台技术专家.工作10年一直专注在运维领域,对于大规模运维体系.自动化运维有着深刻的理解与实践.2010年加入阿里巴巴,目前负责基

SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法

server|备份|错误|对象|解决|数据|数据库 介绍SQL Server 数据库使用备份还原造成的孤立用户和对象名'xxx'无效的错误的解决办法          在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复.但是,此时会出现问题,这里说明几种常见问题的解决方法.一.孤立用户的问题比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立

《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式

原文:<SQL Server企业级平台管理实践>读书笔记--关于SQL Server数据库的备份方式 数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件.为了使得数据库能够恢复一致点,备份不仅需要拷贝数据数据文件里的内容,还要拷贝日志文件里的内容.那么根据每次备份的目标不同,我们可以将备份分为数据备份和日志备份. 数据备份的范围可以是完整的数据库.部分数据库.一组文件或文件组.所以根

巧用利器Powershell,让数据库自动化运维事半功倍

作者介绍 许昌永,高级DBA,微软SQL Server MVP,十年以上SQL Server使用经验.曾就职于腾讯公司,从事了六年游戏行业SQL Server数据库开发和管理.目前就职于跨境电商DX.COM三年多,负责公司SQL Server和MongoDB的数据库架构设计.高可用部署.运维管理和性能优化等工作.翻译出版了书籍<PowerShell V3--SQL Server 2012数据库自动化运维权威指南>.   目前市场上针对SQLServer的图书,好的原创图书屈指可数,翻译的图书较

《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》导读

前言 PowerShell V3--SQL Server 2012数据库自动化运维权威指南 PowerShell 是微软的新命令行Shell和脚本语言,可以简化微软不同的应用程序和组件之间的自动化过程和整合过程.数据库专业人士可以利用它内置的大量cmdlets或任意可用的.NET 类来操作PowerShell,使数据库任务自动化,简化整合过程,或者探索完成手头工作的新方法. 本书向忙碌的数据库专业人士提供了大量简单易学的实战案例.无论是你是在审核服务器,导出数据,还是部署报表,总有一种方案适合你