Facebook运行着全球最大的MySQL数据库集群,该集群分布在两个大洲上的多个数据中心中数以千计的服务器上。让人不解的是,Facebook只动用了一个很小的团队来管理这个庞大的MySQL数据库集群。
近日Facebook的Shlomo Priymak在Facebook博客上发文揭开了这个秘密。Facebook的秘诀就是Facebook自己开发的MySQL Pool Scanner(MPS),MPS能完成一个MySQL数据库管理员(BDA)的几乎所有运营维护工作,使得Facebook的数据库集群运营能够实现高度的自动化。
据Priymak介绍,MPS非常复杂,代码大部分由Python写成,不但能够保证集群的可用性,同时还让管理员能够轻松完成很多复杂任务(升级内核、调整分区大小、升级控制器固件等),例如只用单条命令就拷贝整个Facebook数据中心的数据集。以下是一些常见的能用单条命令操作的数据库集群维护工作:
- 将任意数量的数据库机架清空维护,并移出生产环境。(大多数操作在24小时内完成)
- 在特定的并发数时刻重新镜像数千台机器(例如进行内核升级)
- 将任意数量的可用资源分配给新的项目或者测试任务。例如一次分配200台服务器用于测试。
- 为整个新数据中心建立拷贝,例如Facebook的吕勒奥数据中心。