Facebook在一篇博客文章中分享了该公司在大规模跨越到MySQL8.0版本方面有些困难的经验。此前一直使用MySQL5.6版本。MySQL是由Oracle开发的开源数据库,为Facebook的一些最重要的工作负载提供支持。Facebook表示,每一个新的MySQL主要版本都需要它花费大量的时间和精力来迁移工作负载。其中的挑战包括:将其自定义功能移植到新版本确保复制在主要版本之间兼容最小化现有应用程序查询所需的更改修复阻止服务器支持其工作负载的性能回归MySQL5.6花了一年多的时间;这次升级到MySQL8.0花了几年时间。5.7版本发布时,Facebook还在5.6版本上开发LSM-Tree存储引擎MyRocks。鉴于在构建新存储引擎的同时升级到5.7会显着减慢MyRocks的进度,该团队选择继续使用5.6,直到MyRocks完成。而MySQL8.0的发布恰逢MyRocks即将完成,因此Facebook选择升级来完善其存储引擎。Facebook指出,迁移到8.0比迁移到5.6困难得多。他们有1700个代码补丁可以从他们的自定义MySQL5.6分支迁移到8.0。Facebook的新MySQL功能和不断添加到5.6代码库中的修复程序使这变得复杂。因为从5.6到8.0的升级完全跳过了5.7,一些在5.6中活跃的API要么被弃用,要么被完全删除;这意味着任何使用旧API的应用程序都需要更新。并且一些Facebook功能也不能向前兼容8.0中的类似功能,需要弃用并向前迁移。还有参差不齐的自定义代码文档的问题。Facebook表示,它的大部分自定义代码都有很好的注释和记录。但是其余的代码没有很好的记录,Facebook需要挖掘旧文件、帖子和代码评论来了解历史。最终,Facebook评估了2,300多个补丁,并将其中的1,500个补丁移植到MySQL8.0。“我们已经将许多InnoDB副本集转换为完全在8.0上运行。其余的大部分都处于迁移路径的各个阶段。现在我们的大部分定制已经移植到8.0,更新到Oracle的次要版本相对容易,我们计划跟上最新版本。”“尽管我们在迁移路径上遇到了所有障碍,但我们已经看到了运行8.0的好处。总体而言,新版本极大地扩展了我们使用MySQL@Facebook在线可以做什么的体验。”更多详情可查看官博,未经授权禁止转载本站新闻,违者将依法追究相关法律责任。授权请联系:oscbianji#oschina.cn本文标题:Facebook分享迁移到MySQL8.0的经验本文地址:https://www.oschina.net/news/151964/facebook-mysql-8-0-migration
