更新还是迁移?MySQL 5.7 EOL的规划

到2023年10月,MySQL 5.7将不再接收更新或安全补丁。现在是了解您的选项并为未来的道路规划做准备的时候了。

根据DB-Engines的数据,MySQL是全球最流行的开源数据库,并且在过去十多年中一直排名第二。MySQL推动了LAMP堆栈的崛起,并多年来一直是许多开发人员和DBA的可靠伙伴。到2023年10月,版本5.7将达到生命周期结束状态,这意味着该版本将不再接更新或安全补丁。

这很重要,因为在四个月内,根据使用Percona Monitoring and Management进行数据库管理任务并选择与我们共享遥测数据的用户提供的数据,目前有超过一半的MySQL服务器正在运行v5.7。由于这是数据库安装的代表性样本,这意味着有很多数据库服务器距离生命周期结束只有四个月的时间。

为了准备迁移,我们应该注意些什么呢?我已经标注了一些重点在文章之中。

迁移到MySQL 8.0

首先,您应该查看从MySQL 5.7迁移到MySQL 8.0涉及哪些内容,因为MySQL 8.0将是未来唯一受支持的MySQL版本。MySQL 8.0自2016年以来一直存在市场上,因此它是一个非常稳定的选择,但与以前的版本相比,存在一些重大变化。

一个主要的变化是MySQL 8.0中支持的SQL(结构化查询语言)增强,这使得开发人员和DBA更容易支持查询。例如,如果您在编写子查询时遇到问题,您将会因为支持侧向派生连接和公共表达式(CTE)而感到高兴。还有一个新的交集子句来帮助处理集合。

MySQL 8.0还支持MySQL 5.7中未包含的新命令。一个例子是EXPLAIN ANALYZE,这对于查询调优非常有用。该命令提供了服务器对查询性能的估计分析。添加ANALYZE选项会执行查询,并返回查询性能的实际数字。这提供了更多关于查询实际运行情况的见解,并使查找改进变得更加容易。此外,该命令还可以帮助您在不冒删除后灾难性重建的风险的情况下测试索引的效率。INVISIBLE INDEX是另一个新命令,它允许您创建不可见的索引,这些索引不会影响查询计划,但可以提高查询性能。

除了这些变化之外,更新的默认字符集UTF8MB4提供了Unicode版本9.0的支持,这意味着您可以支持国际字符。如果您需要支持全球业务,这将非常有用。

迁移到MySQL 8.0是单向的,因此您需要确定您的应用程序和数据库是否支持迁移。一种有效的检查方法是使用MySQL Shell的实用程序,该实用程序执行21个不同的测试,以查找在开始迁移过程后可能出现的任何潜在问题。这包括检查是否存在与新保留关键字冲突的表名,使用具有非本地分区的引擎的分区表,表空间数据文件路径中的循环目录引用以及使用已删除的函数等。同样,该实用程序将查找已删除或更改为新默认值的系统变量的问题。

根据您现有的MySQL实现,您可能只需要进行一些小的更改就可以准备好迁移。然而,如果您的应用程序返回多个问题和更新,则需要进行更多的工作。

考虑DBaaS 和 MySQL的替代方案

除了检查系统是否存在潜在的迁移问题,您还应该全面调查您的选项。例如,MySQL是否仍然是您和您的团队的最佳数据库,或者您是否应该考虑替代方案?如果您需要投入大量工作来使应用程序达到标准,那么您是否应该将这种努力投入到迁移到不同平台上?同样,您是否将继续以相同的方式运行数据库基础架构,还是应该使用不同的方法,例如数据库即服务(DBaaS)?

您可以做出三种选择。第一种选择是什么都不做。您可能会决定将应用程序迁移到新的数据库版本的成本太高,选择继续运行不受支持的数据库版本。这并不理想,但在某些情况下可能是最佳选择。我与一家公司合作时遇到了类似的情况,他们在考虑MySQL时决定将系统保持原样,因为该应用程序没有直接连接到公共互联网,并且在两年内需要进行更新。

将应用程序迁移的工作量比缓解潜在安全风险和购买扩展支持的成本更高,因此他们决定保持当前版本的MySQL。这是一种积极的决策,具有真正的业务案例和风险管理方法,而不是把头埋在沙子里忽略问题。

第二个选择是进行迁移,但更改您托管数据库的位置。例如,与MySQL兼容的云服务和托管提供商可以代表您管理这些机器,而不是您必须运行自己的基础架构。DBaaS选项可以减少一些基础架构管理方面的麻烦,但它们也必须被管理和更新。

第三个选择是迁移到不同的数据库。当您的应用程序和数据库安装需要更新且工作量很大时,任何投入的努力都可以用于迁移到不同的数据库。如果您想将系统作为整体移动,则这可能很有用,但可能需要额外的计划来查看您的业务逻辑以及基础架构。

MySQL还是PostgreSQL?

MySQL迁移的最常见外部选项是PostgreSQL,因为它是一个同样受欢迎的开源数据库,拥有庞大的社区。PostgreSQL本身最近更新以支持SQL命令,该命令通常在Microsoft SQL Server、Oracle Database和MySQL中使用。这是在PostgreSQL 15中添加的,以使迁移到PostgreSQL更容易,而无需进行重大重写。这种迁移可能需要一些重写,但如果您已经不得不进行更改以移动到MySQL 8.0,那么为什么不进行一次转移呢?

迁移还可以支持使用商业版或DBaaS版的PostgreSQL。由于其灵活的开源许可证,有许多基于PostgreSQL的数据库服务,因此许多公司宣传他们支持这一点。然而,值得注意的是,是否有任何这些选项是完全兼容的,并真正支持开源PostgreSQL,而不是它们自己的特定变体。这可能类似于MySQL迁移的单向,但一旦您进行了移动,可选项就会减少。

在未来几个月内,许多开发人员和DBA将不得不支持从MySQL 5.7迁移到MySQL 8.0或更高版本的任务。首先要提前规划并了解您的选项。通过查看您现有的应用程序,需要投入多少工作以及您未来希望或需要从应用程序基础架构中获得什么,您可以评估前面不同路径的成本和收益。

原地MySQL更新、完全迁移到新平台甚至保持原地都是您可以考虑的选项。然而,与其坐等或将头埋在沙子里,不如提前解决问题并充分利用您的机会。

作者:Dave Stokes

更多技术干货请关注公号“云原生数据库”

squids.cn,目前可体验全网zui低价RDS,免费的迁移工具DBMotion、SQL开发工具等。

你可能感兴趣的:(云数据库,mysql,数据库)