
基础软件国产化替代系列之七:到2023年10月,开源数据库MySQL 5.7将不能接受更新或安全补丁了。所以,对于MySQL数据库的用户而言,是时候为未来的“道路”制定计划了。采用自研的国产的、分布式数据库显然是用户的一个选择项,有可能是一个最佳选项!


根据DB-Engines的数据,MySQL是世界上最受欢迎的开源数据库之一,十多年来一直名列最受欢迎的数据库第二。MySQL推动了LAMP堆栈的兴起,是许多开发人员和DBA信赖的一个伴侣。
2023年10月,MySQL 5.7 将EOL,即最终达到生命周期结束的状态,这意味着此版本将不再能接收更新或安全补丁。
现在剩余的时间只有短短的不到四个月!用户应该怎么做呢?

1.MySQL 5.7 EOL,8年前就知道了
产品从设计、开发到最终发布和使用开始,会有一个生命周期。通常EOL(end of life )象征着产品到了生命周期的最后阶段。
产品EOL后,一些关键问题需要及时处置。对于IT硬件设备,EOL意味着物理处置旧设备并安装更新版本。对于软件系统,意味着“断奶”,遗留系统或将应用迁移到新平台,或更改旧系统。
微软的 Windows操作系统持续更新了几十年,有多个版本的产品EOL,微软不再支持这些产品的更新和安全补丁,最著名的莫过于Windows XP系统。对于依赖某些 Windows 版本的用户而言,起早做好应对计划是过去几十年的一门“必修课”。
为了帮助用户应对EOL产品的挑战,企业一般会编写EOL支持政策,以帮助用户了解产品达到使用寿命后会发生什么。这些政策说明用户支持的类型和时间表,并就迁移系统、避免损失和减轻由于EOL情况和失去支持而导致的漏洞的方法与建议等。
被Oracle收购后,MySQL一直遵循着其开发规则,用户能在其产品版本立项阶段就清楚其产品周期。在标准支持服务阶段,社区版用户能够定期进行版本维护,包括错误修复、补丁更新等;在延伸支持服务与持续支持服务阶段,产品只能提供有限的乃至停止服务;当超过9年后,不会进行任何的代码更改与持续支持服务。
从微软的网站可以看到MySQL不同版本的生命周期。MySQL 5.7于2015年10月21日发布,EOL时间为2023年10月21日。


MySQL不同版本的EOL



2.还有多少用户在使用MySQL 5.7?
MySQL咨询公司Percona发布的Percona监控和管理(PMM,percona Monitoring and Management),是一个用于MySQL、PostgreSQL和MongoDB的开源数据库监控、管理和可观察性的解决方案。
利用该方案可以观察数据库系统的健康状况,探索其行为的新模式,对其进行故障排除,并执行数据库管理操作,无论它们位于本地还是云中。
根据Percona监控和管理的数据,运行MySQL服务器的用户目前超过一半采用v5.7。这是数据库安装的代表性数据,意味着有许多数据库服务器距离生命周期结束只有不到四个月的时间。
中国的数据更有代表性。


MySQL各个版本使用占比
根据2019年的调查数据,MySQL 5.7 版本的使用比例最多,达到34.91%; MySQL 5.6和5.7的比例已经占到的总数的一半,接近57%。
超过17%的用户使用MySQL 8.0。25%的受访者仍在使用旧版本的 MySQL(5.0、5.1和5.5)。
那么,MySQL 5.7用户不升级会遇到什么问题?根据甲骨文MySQL解决方案首席工程师徐轶韬的介绍,Oracle公司提供的产品MySQL原则上是安全的。但是,有时会发现极其罕见的重大安全漏洞,甲骨文公司将迅速采取行动修复该漏洞,并最终发布安全信息,包括对漏洞的简要说明、由此带来的风险、避免方法和提供补丁的时间。
但现实中存在着不同方面阻碍升级的因素。如果MySQL 5.7用户采用不升级的策略,带来的问题包括:增加处理故障的工时,安全风险增大,无法获得性能提升,无法降低运维成本等。


不升级的弊端

3.怎么做,5条路径任您选?
现在,是时候了,MySQL 5.7用户必须做出决策。路径有这5条。
第1种:选择是不做任何事情,保持不变

有一些用户可能认为,将已有的MySQL 5.7应用迁移到新数据库版本的开销太高,因此选择继续在不支持的数据库版本上运行。
虽然这种选择并不是理想的,但在某些情况下,却是一个上佳选择。
一家公司在查看MySQL的情况后决定保持原样的原因无非两个:
一是该应用没有直接连接到公共互联网,并且将在未来几年内更新升级;
二是迁移应用的工作量高于降低潜在安全风险和购买扩展支持的成本。
因此他们有可能决定继续使用当前版本的 MySQL,什么都不做。
第2种,数据库上云,采用DBaaS

MySQL 5.7用户放弃本地部署,选择云上托管的数据库即服务(DBaaS),则是数据库运行方式的变化。目前包括阿里云、腾讯云、华为云、AWS等都提供MySQL数据库托管服务。
与MySQL兼容的云服务和托管提供商可以代表用户管理这些服务器,而不必运行在自己的基础架构上。
DBaaS 选项可以消除一些基础架构管理难题,但它们也必须自行管理和更新。
不过云上托管的成本是否会达到用户预期,需要观察。
第3种,迁移到MySQL 8.0

首先,您应该查看从MySQL 5.7迁移到MySQL 8.0所涉及的内容,MySQL 8.0将是唯一受支持的MySQL版本。MySQL 8.0自2018年以来一直在市场上销售,是一个稳定的选择,但与上一版本相比有一些重大变化。
一个主要的变化是MySQL 8.0中支持的SQL(结构化查询语言)的增强功能,使开发人员和DBA更容易支持查询。MySQL 8.0还支持MySQL 5.7中未包含的新命令,更新的默认字符集 UTF8MB4 还提供 Unicode 版本 9.0 支持。
不过,迁移到MySQL 8.0是一条单行道,因此您必须确定您的应用程序和数据库是否支持迁移。
升级到较新版本的MySQL并不能解决与扩展、高可用性和处理现代云原生架构相关的固有挑战。它还依赖于Oracle未来的承诺来维护和推进MySQL产品。
第4种,采用MySQL分支数据库或者PostgreSQL

像MariaDB和Percona Server这样的MySQL分支是独立开发的,为MySQL用户提供了替代路径。
目前来看,这些分叉通常比MySQL更快地引入功能和性能改进。迁移到分叉可以提供支持的连续性、MySQL兼容功能的熟悉度以及潜在的增强功能。
缺点则是与MySQL一样,这些分支在处理高度并发、写入密集型工作负载或部署在分布式架构中时仍然面临挑战。
此外,支持的质量可能会有所不同,一些企业可能会对依赖社区驱动的项目犹豫不决。
MySQL迁移最常见的外部选项是PostgreSQL,因为它是一个同样流行的开源数据库,周围有一个重要的社区。PostgreSQL本身最近更新为支持SQL命令,该命令通常用于SQL Server、Oracle数据库和MySQL Microsoft。这是在PostgreSQL 15中添加的,以便更容易迁移到PostgreSQL,而无需进行重大重写。但是此迁移可能需要一些代码重写。
迁移还可以选择支持使用商业或DBaaS版本的PostgreSQL。由于其灵活的开源许可证,有许多基于PostgreSQL的数据库服务。但是,值得注意的是,这些选项中的任何一个是否完全兼容,并且真正支持开源PostgreSQL。
这可能是一条类似于MySQL迁移的单行道,但是一旦进行了迁移,选择就更少了。
第5种,迁移到分布式SQL数据库,实现国产化替代

如果您的应用需要超出单个MySQL实例所能提供的可扩展性和高可用性,那么国产的分布式数据库可能是一个最好的选择,能做到自主可控,并且性价比最高。
星环科技自主研发的国产分布式交易型数据库KunDB,在替代国外数据库方面,以高度兼容MySQL和Oracle,提供完整的关系型数据库的能力和高性能,以及国产化生态,在节省大量人力成本的同时,实现快速、安全地替换Oracle的目标。
KunDB高度兼容Oracle语法与PL/SQL,支持VARCHAR2/NVARCHAR2、NUMBER等全部常用数据类型。
一方面,在PL/SQL语法上,KunDB支持控制语句、集合、动态SQL、子程序、预定义包、错误处理等全部PL/SQL语法。
另一方面,通过自主原创的PL/SQL编译器,KunDB支持复杂PL/SQL程序,执行性能比解释执行提升一个数量级,解决了Oracle业务迁移到国产化数据库的核心痛点,为其他兼容性完善提供了基础。
例如,在某省级社保系统数据库迁移过程中,KunDB仅用了3天,就完成了8万多行PL/SQL代码的迁移工作,高效、低成本、安全地保障了原数据库迁移,实现了数据库系统的国产化替代。
又如,TiDB,一个兼容MySQL的分布式SQL数据库也是一个不错的选择。分布式SQL数据库结合了传统RDBMS的最佳方面(ACID合规性、SQL支持)和NoSQL系统的优势(水平可扩展性、高可用性)。特别是TiDB与MySQL 兼容,使迁移更容易。
建议用户选择国产的分布式SQL数据库,做到自主可控!
参考资料
·https://www.infoworld.com/article/3699117/update-or-migrate-planning-for-mysql-5-7-eol.html
·https://developer.aliyun.com/article/1118726
·https://zhuanlan.zhihu.com/p/642916787
·https://endoflife.software/applications/databases/mysql

春华秋实!

扫码关注
大数据应用
从现在开始

End




