加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

又是MySQL,存储PB级别的数据,还得自动化备份

发布时间:2022-11-02 15:00:41 所属栏目:MsSql教程 来源:未知
导读: 昨天我们刚刚提到对MySQL发展和使用上的争议,今天它又来了……
昨天说过,虽然有不少之前使用MySQL的公司已经转投MariaDB怀抱,比如Google、Redhat、Wikipedia等等,但还有不少公司仍在继

昨天我们刚刚提到对MySQL发展和使用上的争议,今天它又来了……

昨天说过,虽然有不少之前使用MySQL的公司已经转投MariaDB怀抱,比如Google、Redhat、Wikipedia等等,但还有不少公司仍在继续使用MySQL,比如Facebook。

Facebook的MySQL数据库是世界上最庞大的MySQL数据库之一,在不同地区有数千个数据库服务器,存放着PB级别的数据。并且Facebook只动用了一个很小的团队来管理这么庞大的数据库集群。今天要说的,就是这个团队如何高度自动化且有效地备份这些数据。

通过以下三个措施,他们做到了有节奏的增长,同时具备支持上十亿用户的灵活性:

措施1:二进制日志和mysqldump

第一个措施称为机架备份(Rack Backup),简称RBU。在每个数据库机架上都有两个RBU存储服务器。以RBU作为数据库服务器放在同一个机架中,这可以保证最大的带宽和最小的延迟,它们同时可以作为缓存,在备份的第二个措施中使用。

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

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

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

mysqldump的一个主要好处是:磁盘上的数据损坏不会影响到备份中。如果磁盘某个扇区出现问题或是写入错误mssql数据库备份,InnoDB页面校验和就会出错。在组合备份流时,MySQL会从内存中读取正确的内容,或是去磁盘读取,然后遇到错误的校验和,停止备份(以及数据库进程)。

对在自己权限范围内的所有数据库,每个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恢复协调器的递归缩写)的系统,工程师如果想恢复他们所用工具的数据库的过去版本,就可以以自服务方式使用该系统恢复数据。这对于快速开发来说还是挺方便的。

最后,备份是重复性工作,如果一切正常,往往没人会注意。但其实它也是技术活,需要懂得系统、网络和软件等多方面的专业知识,回报也是大大的。

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!