开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis ,Oracle ,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加微信号 liuaustin3 (共1240人左右 1 + 2 + 3 +4)新人会进入3群(3群准备关闭自由申请) +4群
每日感悟
年轻的时候,被教化,爱情无价,友情无价,亲情无价,大义无价,真好,可惜了,终于发现无价可能是付不起,或者太便宜,只是曾经你一厢情愿的珍重罢了
根据DB-Engines的数据,MySQL是全球最流行的开源数据库,并且在过去十多年中一直排名第二。MySQL推动了LAMP堆栈的崛起,并多年来一直是开发人员和数据库管理员的可靠伴侣。到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(结构化查询语言)的增强,这使得开发人员和数据库管理员更容易支持查询。例如,如果在编写子查询时遇到问题,你将会喜欢lateral-derived joins和common table expressions(CTEs)的支持。此外,还引入了一个新的intersect子句来辅助集合操作。
MySQL 8.0还支持一些不在MySQL 5.7中包含的新命令。一个例子是EXPLAIN ANALYZE,它对查询调优非常有帮助。EXPLAIN命令给出服务器对查询性能的估计分析。添加ANALYZE后,查询会执行,返回的数字报告查询的实际性能数据。这提供了更多关于查询实际运行情况的洞察,有助于找到改进的方法。此外,INVISIBLE INDEX命令可以帮助你在不冒删除后灾难性重建的风险下测试索引的效率。
除了这些改变之外,更新的默认字符集UTF8MB4提供了对Unicode版本9.0的支持,这意味着你可以支持国际字符。如果你需要支持全球操作,这将非常有用。
迁移到MySQL 8.0只能是单向的,因此你需要确定你的应用程序和数据库是否支持这一变化。一种有效的检查方法是使用MySQL Shell的util.checkForServerUpgrade()工具,该工具执行21个不同的测试,以查找在迁移过程中可能出现的潜在问题。其中包括检查是否有与新的保留关键字冲突的表名、使用非本机分区引擎的分区表、表空间数据文件路径中的循环目录引用以及使用已删除的函数。类似地,该工具还会查找已删除或更改为新默认值的系统变量的问题。
根据你现有的MySQL实现情况,你可能只需要进行一些微小的更改即可准备好。然而,如果你的应用程序返回多个问题和更新,那么你将需要更多的工作。
考虑DBaaS和MySQL替代方案 除了检查系统是否存在潜在的迁移问题,你还应该全面调查你的选择。例如,MySQL是否仍然适合你和你的团队,或者你是否应该考虑其他选择?如果你需要投入大量工作来将应用程序提升到理想状态,是否应该将这种努力放在迁移到其他平台上?同样,你是否会继续以相同的方式运行你的数据库基础架构,还是应该采用数据库即服务(DBaaS)等不同的方法?
你可以做三个选择。第一个选择是不做任何操作。你可能决定将应用程序迁移到新的数据库版本的成本太高,选择继续运行不受支持的数据库版本。虽然这并不理想,但在某些情况下可能是最佳选择。我与一家公司合作时遇到了类似情况,他们在考虑MySQL时决定保持系统不变,因为该应用程序与公共互联网没有直接连接,并且计划在两年后进行更新。
对于该公司来说,将应用程序迁移的工作量大于防范潜在安全风险和购买扩展支持的成本,因此他们决定继续使用当前的MySQL版本。这是一种积极的决策,具有真实的商业案例和风险管理方法,而不是把头埋在沙子里忽视问题。
第二个选择是进行迁移,但改变数据库托管的位置。例如,与MySQL兼容的云服务和托管提供商可以代表你管理这些数据库服务器,而不是你自己运行基础架构。DBaaS选项可以减轻一些基础架构管理方面的困扰,但它们仍然需要进行管理和更新。
第三个选择是迁移到不同的数据库。当你的应用程序和数据库安装需要更新并且工作量较大时,将任何努力投入到迁移到其他数据库上可能会更有用。如果你希望整体迁移系统,这可能是一个不错的选择,但需要额外的计划来审查你的业务逻辑以及基础架构。
MySQL还是PostgreSQL?MySQL迁移的最常见的外部选项是PostgreSQL,因为它是一种同样受欢迎的开源数据库,拥有庞大的社区支持。PostgreSQL最近进行了更新,支持SQL命令MERGE,该命令通常在Microsoft SQL Server、Oracle Database和MySQL中使用。在PostgreSQL 15中添加了这个功能,使得在不需要大量重写的情况下更容易迁移到PostgreSQL。这种迁移可能需要进行一些重写,但如果你已经不得不做出更改以迁移到MySQL 8.0,为什么不考虑进行全面转换呢?
MERGE迁移还可以支持使用商业版或DBaaS版的PostgreSQL。由于其灵活的开源许可证,基于PostgreSQL的许多数据库服务应运而生,许多公司宣称能够支持这一点。然而,值得注意的是,你需要查看这些选项是否与开源的PostgreSQL完全兼容,并确实支持,而不是它们自己的特定变种。这可能是类似于MySQL迁移的单向街,但一旦进行了迁移,选择将变得更少。
从MySQL 5.7迁移到MySQL 8.0或更新版本将是未来几个月内许多开发人员和数据库管理员需要支持的任务。提前做好规划,了解你的选项。通过审查现有应用程序,确定你需要付出多少工作量以及你未来希望或需求的应用程序基础架构,你可以评估不同路径的成本和利益。
直接在原地更新MySQL,完全迁移到新平台,甚至保持原地,都是可以考虑的选项。然而,与其坐等或逃避问题,不如提前应对问题,充分利用机会,该和MySQL 5.X 说再见了。