Facebook宣布升级数据库版本!困难重重!

不久前,Facebook官博宣布他们的数据库版本从MySQL5.6升级到了MySQL8.0版本。MySQL是由Oracle公司开发的开源数据库,在脸书的重要、核心工作负载中提供动力。
 
虽然MySQL8.0版本在几年前就发布了,我们还是首先来复习一下MySQL8.0的一些关键增强功能:
  1. SQL窗口函数。
  2. JSON扩展语法,改进排序。
  3. GIS地理支持。SRS(空间参考系统),以及SRS感知空间数据类型,空间索引和空间函数。
  4. 可靠性。
  5. 可观察性。性能模式、信息模式、配置变量和错误记录的显著增强。
  6. 可管理性。远程管理、撤销表空间管理和新的即时DDL。
  7. 安全性。OpenSSL改进,分解超级权限等。
  8. 针对特定硬件的特定工作负载进行优化。
 MySQL数据库
脸书称他们最近的一次大版本花费了一年多时间才完成升级到MySQL5.6,并且在5.6版本上开发了LSM树存储引擎,MyRocks。在升级到5.7的同时构建一个全新的储存引擎,会大大减慢MyRocks的进度,因而选择了继续使用5.6版本,直到MyRocks完成,MySQL5.6以即将完成其使命,升级到MySQL8.0版本。对MySQL的修改包括客户机连接器、存储引擎、优化器以及复制等诸多方面。
 
然而开发的过程极具挑战,包括移植自定义功能到新版本上、确保版本间的复制兼容、修复一些性能退化、最小化现有应用所需的某些更改等。到目前为止,8.0的移植工作已经花费了数年的时间,脸书许多InnoDB副本集已经转换为完全在8.0运行的状态,剩下的大部分也都在迁移过程中。
 
目前脸书需要解决的问题主要在于:
  1. 无法直接升级服务器,需要使用逻辑转储和还原来构建新服务器。对脸书这种规模的库来说,这个过程需要花费数天并且很容易被中断。
  2. 检测API更改。
  3. 一个副本集中难以同时支持两个主版本。在升级8.0后需要尽快禁用并移除5.6。用户使用应用程序中的新特性排序规则时可能会中断两个版本间的复制流。
 
脸书称,尽管版本更迭会带来种种困难,但他们仍选择将一些应用程序提早迁移到了8.0版本,以利用诸如文档储存和新的日期时间支持等功能。脸书还在博文中提到,他们一直在尝试在MyRocks上支持像即时DDL这样的储存引擎特性。
 
那大家对脸书的这个宣布有什么看法呢?欢迎在评论区留言讨论!想学习MySQL的小伙伴也可以移步我们官网,上面有很多免费在线课程哦~

实战教学·项目驱动

开班计划中
  • 软件测试

    12月13日

  • JAVA

    12月13日

  • 前端

    12月26日

  • 网安

    12月27日

24小时报名热线

132 2811 3191

预约试学