Facebook|Facebook将花费数年时间完成数据库向MySQL 8.0的迁移

Facebook|Facebook将花费数年时间完成数据库向MySQL 8.0的迁移

文章图片

Facebook|Facebook将花费数年时间完成数据库向MySQL 8.0的迁移

MySQL作为一种开源数据库 , 承载着Facebook的重要工作的运行和记录 , 在新版本的更新方面 , 每一个新的主要版本都要通过大量时间的测试完成工作量的迁移 , 但是在相关数据迁移的同时也面临着一系列的挑战 。 例如迁移的时间过长、复制的版本与所需要迁移的版本是否兼容、现有应用程序在查询时需要经过相关的更改等问题 , 都是在数据迁移的同时需要综合考虑到的 。

距离上一次faceboo实现MySQL 5.6主要版本的升级还是花费了一年多的时间 , 而这次在5.6版本基础上的优化和升级也将通过较长一段时间才能够完成 。 在构建新的存储引擎的同时 , 还需要兼顾升级之后新的存储引擎系统运行的速度 , 经过一系列综合的分析与测评 , 最终决定使用哪一个版本的存储引擎 。 至今 , 8.0版本的迁移已经花费了Facebook几年的时间 , 目前已经初步实现了很多的副本集中转换到8.0版本上继续运行 , 但是其中大多数副本由于迁移时间过长 , 还处在不同的前一阶段 , 数据的迁移尚未能够实现完全转移 。 在自定义功能领域 , 很多版本都已经转移到了8.0系统 , 更新到新存储引擎上面的次要版本与实现数据完全迁移相比要更加容易 , 伴随着最新版本的更新 , 数据的迁移也需要随着版本的更新而更新 。

为了完成数据的迁移 , Facebook每天都在进行着用户数据的实时存储 , 通过将逻辑备份转变为物理备份的方式 , 完成了备份速度的大幅度提升 , 此外 , 定制化的物理备份也能够将数据库中表的结构和数据完整地保存到文本文件当中 , 在原有地数据迁移速度较慢的基础之上大幅度提升迁移的效率 。

【Facebook|Facebook将花费数年时间完成数据库向MySQL 8.0的迁移】新的读取语句的方式也减少了对于磁盘性能的影响 , 在时间方面 , 由于原先较长的数据迁移周期 , Facebook打算通过多个实例并发的方式来完成数据备份 , 从而在一定程度上大幅度缩短备份的时间 , 减少对于主机性能的影响 。 数据的物理备份则是通过操作系统层面将SQL数据的读取保持与事务一直 , 增强的Xtrabackkup也能够支持快速的表级还原和混合增量备份 , 以及全量和增量的备份 , 从而减少备份的相关空间 , 避免了复杂空间的运用 , 相关应用也将持续优化 。