dev.mysql.com/doc/refma...其中有几点需要注意的:(1)MySQL 5.7 必须是 5.7.9 及以上 GA 版本,否则不支持升级到 8.0。(2)官方建议先升级到 5.7 最新的小版本,然后再升级到 8.0。(3)官方不支持跨大版本升级,即 5.6 不能直接升级到 8.0。(4)8.0 第一个 GA 版本是 8...
MySQL5.7升级8.0之前必须知道的几件事
一、为什么要升级到MySQL 8.0?
1、安全性
随着黑客技术的不断发展,MySQL 5.7的安全性也面临着不断的挑战。MySQL 升级 8.0 可以消除已知的安全漏洞,并提供新的安全功能,从而保护用户的数据安全。
2、性能
随着数据量的增加,MySQL 5.7的性能可能会出现瓶颈。MySQL 升级 8.0 可以提高性能,加快查询速度,提高数据处理能力。
3、功能
MySQL 的不断升级也意味着新的功能的增加。MySQL 5.7 升级 8.0 可以让用户获得新的功能和特性,提高用户的使用体验。
4、支持
MySQL 5.7 已于2023年10月开始停止维护,如果您使用的是MySQL 5.7,可能会面临缺乏技术支持的风险。因此,升级到最新版本的 MySQL 8.0 可以获得更好的技术支持。
二、升级到MySQL 8.x的哪个版本合适?
1、MySQL 8.x 分为创新版和长期支持版本(LTS),创新版和 LTS 版本都是生产级质量。当前 MySQL 8.0.x 是 LTS 版,最新版本是8.0.36,8.1.x、8.2.x、8.3.x 都是创新版。
2、按照最新的 MySQL 版本控制模型,大约每2年,一个次要版本就会被指定为长期支持版本,此版本将提供5年的首选支持和3年的扩展支持。也就是说,按目前已出现的版本,MySQL 8.1.0、8.2.0 和 8.3.0 都是创新版本,大约一年后,某个 MySQL 版本 8.x 将最终会被指定为 LTS 版本,这主要是让用户有足够的时间从 8.0.x 迁移到 8.x LTS版本,而原 LTS 版本 8.0.x 也将于2026年4月结束8.0生命周期(EOL)。
3、按当前已有版本,如果您想要使用 MySQL 数据库的最新功能、改进和所有错误修复,请升级为创新发布版本,例如,8.1.x、8.2.x、8.3.x等。如果您只需要修复 MySQL 数据库的错误或安全漏洞,请使用 8.0.x 版本,例如,8.0.34、8.0.35、8.0.36等。
三、MySQL 8.0.x 选哪个版本合适?
没有特殊情况,当然是选择 MySQL 8.0.x 最新版本最好,打开 MySQL 官网,你会发现最新版本 8.0.36 有很多个版本,怎么选择呢?
通常生产环境都是使用二进制包安装 MySQL 5.7,例如:mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz。
如果要升级 8.0,建议选择与当前 MySQL 5.7 二进制包版本一致的 8.0 安装包,例如:mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz。
对比这2个安装包,你会发现一个是 tar.gz,一个是 tar.xz,区别在于压缩算法和压缩率不一样,一般来说,xz 算法比 gzip 算法更加高效,可以获得更高的压缩率,压缩包更小,至于 tar.xz 解压命令请自行百度吧。
除此之外,8.0 版本的二进制安装包,对比 5.7 版本,glibc 的版本也多了 2.17 和 2.28 两个版本,因为 glibc 版本都是向下兼容的,mysql-glibc-2.12 版本的也可以在更高的 Linux glibc2.17 和 2.28 上跑,所以建议直接选择 mysql-glibc-2.12 就行。
最后,如果要核对操作系统 glibc 版本,可以使用命令: getconf -a | grep glibc。
四、如何升级?
升级前请详细阅读官方升级手册:
dev.mysql.com/doc/refma...
其中有几点需要注意的:
(1)MySQL 5.7 必须是 5.7.9 及以上 GA 版本,否则不支持升级到 8.0。
(2)官方建议先升级到 5.7 最新的小版本,然后再升级到 8.0。
(3)官方不支持跨大版本升级,即 5.6 不能直接升级到 8.0。
(4)8.0 第一个 GA 版本是 8.0.11,8.0 小版本升级只能在 GA 版本之间,且支持跨小版本升级,而非 GA 版本不支持升级。
1、原地升级
(1)因大版本升级无法回滚,所以 MySQL 5.7 升级前必须先备份。
(2)找个测试环境,先原地升级试试,然后与开发一起进行业务测试和性能测试,没问题后再去生产实施。
原地升级的方法,就是将my.cnf的basedir路径替换成MySQL8.0的二进制文件,然后调整部分参数适配8.0,启动新数据库后执行upgrade升级程序更新元数据信息,具体步骤请各位读者自行百度。
(3)生产环境实施时,建议先升级备库,接上主从复制并验证(有时能接上,但不一定能正常复制,需根据报错情况具体分析),然后利用高可用工具切换到备库,业务验证功能和性能没问题后再去升级主库,这样风险更小。
2、迁移升级
(1)搭建一套 MySQL 8.0 的新测试环境,与开发一起进行业务测试和性能测试,没问题后再去生产实施。
(2)生产环境实施时,先利用数据实时同步工具迁移数据到 8.0,再找个业务低峰期替换数据源,再做反向增量同步到 5.7,如果有异常,也能及时回滚。
3、总结
升级前,必须先阅读官方升级文档,了解 8.0 的新特性,以及与 5.7 不同的地方。
对比这2个升级方式,个人更倾向于迁移升级。虽然用到的硬件资源更多,但风险更加可控。
而原地升级,因 8.0 变化较大,可能会出现各种未知的升级错误,回滚更麻烦,适合资源有限的情况下,对小数据量的业务库进行改造升级,如果业务数据量较大,比较重要,更建议迁移升级。2024-08-12