上个月,信通院下属的云计算开源产业联盟发布了一个关于 MySQL 数据库开源生态的研究报告《开源数据库生态发展研究报告 - MySQL 开源数据库》,其中提到了在 10 月份 MySQL 社区将会发生一件大事 --MySQL 5.7 将会于 2023 年 10 月 21 日结束服务期(EOL)。

MySQL 目前已经成为中国用户使用最广泛的开源数据库,其中 5.7 版本的用户的比重又是最高的,因此 MySQL 5.7 EOL 事件会影响到很多 MySQL 用户。
          
根据报告中的统计数字,MySQL 5.7 用户占比在国内高达 47%。届时这些用户将会面临选择,如何应对 EOL 事件。实际上 2020 年的时候就有一些机构提醒用户,MySQL 5.7 按照生命周期将于 2023 年到达服务期限,当时这件事还在 MySQL 社区和 DBA 圈子里引发过一些关于开源项目安全性的讨论。3 年后,这个狼来了的问题,终于正式要面对我们了。
         
实际上数据库 EOL 的问题并不是在 MySQL 5.7 上第一次出现,Oracle 用户都很清楚每个版本 EOL 的时间表。只不过 Oracle 官方依然会对付费用户提供延长期服务,还会在数年时间里继续为这些用户发布安全补丁包,因此 EOL 的 Oracle 版本依然可以通过各种渠道找到安全补丁包。而作为开源数据库的 MySQL,EOL 就意味着开源社区不再提供安全与功能方面的补丁升级了。
面对 MySQL 5.7 EOL 这个事件,percona 官方宣布了付费支持的计划,在 EOL 之后的三年内,percona 会为需要服务的客户提供收费服务支持。不过支持的力度如何,是否承诺对安全问题发布补丁不得而知。
MariaDB 一贯的对 MySQL 持有敌意,他们希望 MySQL 5.7 用户不要升级 MySQL 8 了,而是通过 11 条简单的命令迁移到 MariaDB 上去。除此之外,一些云厂商也纷纷提出了解决方案。
云厂商则纷纷发布了延长服务的声明,微软 Azure 将会在 MySQL 5.7 EOL 之后,为其公有云用户提供延长的服务,由 Azure 官方提供支持,最晚到 2025 年。
类似情况,亚马逊也将为其公有云用户提供一年期的支持。不论是亚马逊还是微软,当延长服务期结束后,MySQL 5.7 用户将必须强制升级到 MySQL 8 或者迁移到其他数据库上。
面对这个问题,国内的 MySQL 生态的数据库厂商也纷纷给出了自己的迁移方案,希望吸引这部分用户到自己的产品上来。
         
面对 MySQL 5.7 EOL 这个事件,我们会如何面对呢?最近我也和一些 MySQL 5.7 用户做了一些交流,根据他们反馈的情况,以及业内对此问题的应对措施,再结合报告中反馈的四种情况,我总结了一下,大致有六种应对措施。
         
第一条路径:直接升级到 8.0  做出此选择的 MySQL5.7 用户占比较高,此类用户对此问题早已了解,并且在半年前就已经开始应对工作。MySQL 5.7 升级到 8.0 不仅仅是更换一个数据库版本而已,因为 8.0 与 5.7 在技术上有较大的差异,CBO 优化器与 SQL 引擎都有一定的不同,因此数据库升级后应用需要做全面的测试,对于不够兼容的部分代码做一定的修改才能确保顺利迁移。因此采用第一种路径的用户,需要做一定的提前准备。
         
第二条路径:直接迁 移到 MySQL 兼容的国产数据库。 有一部分客户考虑到信创的问题,原本就已经计划对数据库进行国产化替代,准备一次性到位。如果用国产数据库替代,那么可以选择的路径也很多,很多国产数据库产品就是 MySQL 生态产品,比如腾讯 TDSQL、万里 GreatSQL、中兴通讯 GoldenDB、Oceanbase、阿里 PolarDB-x 等。如果不需要使用存储过程,还可以考虑 TiDB。很多国产数据库也有 MySQL 兼容模式,虽然不能完全兼容 MySQL,应用做少量的修改也可以迁移过去。达梦、人大金仓、GaussDB 等数据库都有 MySQL 兼容模式。直接迁移到国产数据库的优点是从根本上完成数据库国产化替代,不过缺点也很明显,一方面是迁移需要一定的资金,也需要一定的时间,另外一方面是国产数据库许可证采购的总体成本不低。
         
第三条路径:迁移到其他 MySQL 生态的开源产品,比如 MariaDB 和国内的 GreatSQL。 向 MariaDB 迁移的用户主要考虑的是摆脱 Oracle 生态,选择一个相对更加安全的开源项目,不过 MariaDB 社区是否足够安全,也是仁者见仁智者见智。GreatSQL 是 Percona Server 的一个开源分支,也基于 GPLV2 协议,代码托管在国内的 gitee 上。在保持与 Percona Server 兼容的基础上,会更快速地修复漏洞,保障用户的数据安全。随后 GreatSQL 开源社区将会在官网上开设一个 MySQL5.7 停服专区,帮助 MySQL 5.7 的用户解决一些停服带来的问题,为某些暂时无法升级的用户提供支撑。随着软件供应链安全方面的需求的不断加强,国内开源项目分支的发展将会迎来高速发展。这条路径的迁移成本较低,缺点是用户目前对国内的开源分支的认可度还存在一定问题。
         
第四条路径:对于公有云用户,依托云平台再多撑一两年,在一两年中再选择方向。 公有云厂商还会对 MySQL 5.7 提供一定时间的延长支持。公有云用户先观望一年再选择稳妥的技术路线的比例是比较高的。这条路线获得了一定时间的缓冲区,以便于做出更为科学的决策,不过仅仅是过渡期的临时做法。
         
第五条路径:换门,从 MySQL 直接更换数据库种类,转投另外一个开源数据库 PG 阵营。 和摄影界换门一样,采取这条路径是要下大决心的。因为以往的应用都要修改,数据都要迁移,以往积累的应用开发与运维经验也都要放弃。
         
第六条路径:不变,继续使用 MySQL 5.7。 数据库都是在内部使用的,因此把网络的安全边界扎牢,哪怕有安全漏洞,也不升级,不改变,等到应用系统升级的时候再考虑升级或者更换数据库。选择这条路线的用户比例不低,这条路径成本最低,不过要承担一定的安全风险。采用这条路线的用户把安全依托在网络安全和边界安全上,通过扎紧篱笆来防止安全事故。
         
最后要表达的观点是,EOL 是很多产品都会面临的事件,无需过度担心。不过数据库产品的 EOL 影响面更广一些,处理起来也更麻烦一些,特别是 MySQL 5.7,对于一些复杂一些的系统,直接升级到 8.0 还是需要做一些验证工作的。作为一个核心的数据资产承载体,没有安全补丁处于裸奔状态的数据库也是一个比较大的隐患。从软件供应链安全上看,商用数据库 Oracle 在代码上的安全性要高于 MySQL 这样的开源数据库,再加上 Oracle 延长期服务依然在出安全补丁,用户也可以通过一些特殊渠道获得安全补丁。因此相对于 Oracle 数据库的版本 EOL,MySQL 的 EOL 问题更受企业级用户的重视。面对即将到来的 MySQL 5.7 EOL,IT 部门的领导和 DBA 哪怕没有做什么动作,多思考一下也是好的。
对《开源数据库生态发展研究报告 - MySQL 开源数据库》有兴趣的朋友可以点击文后的阅读原文去下载。  

聊聊即将到来的 MySQL5.7 停服事件
标签: