目前使用的版本是 MySQL 5.5,32 位的。打算升级到 64 位的 MySQL 8 (或者 MySQL 5.7 )。
升级理由:
- 32 位版本内存有限,最大 4 个 G 。
- 升级后性能也会好一些。
步骤:
- 安装一个 MySQL 8 实例。
- 导入数据到 MySQL 8 并配置为从库。
- 主从同步一致后,停掉应用,将从库提为主库。
- 修改应用的数据库配置为主库,启动应用。
想问问:有什么坑?需要注意的地方?

目前使用的版本是 MySQL 5.5,32 位的。打算升级到 64 位的 MySQL 8 (或者 MySQL 5.7 )。
升级理由:
步骤:
想问问:有什么坑?需要注意的地方?
1 sadfQED2 Oct 13, 2021 via Android PHP 项目的话需要注意新版本的密码检验不支持 |
2 cszchen Oct 13, 2021 via iPhone group 查询不一样了,5.7 以前不是标准的 sql,不过也可以改成 5.7 以前的规则 |
3 jasonkayzk Oct 14, 2021 5.x dump 的 sql 数据在 8.x 可能执行失败(亲身实践 |
4 C02TobNClov1Dz56 Oct 14, 2021 用 5.7 就行了, 别升级 8. |
5 Rache1 Oct 14, 2021 按照 MySQL 官方的说法,你不能跳版本升级。 即你只能 5.5 -> 5.6.x -> 5.7.x -> 8.0 这样升级上去。 当然,如果你直接从 5.5 导出数据,然后导入到 8.0 去,这是没啥问题。 具体要看文档 https://dev.mysql.com/doc/refman/8.0/en/upgrade-paths.html |
6 myd OP @jasonkayzk 是什么原因呢? |
8 BiChengfei Oct 14, 2021 id 默认自增策略有区别了,innodb_autoinc_lock_mode 默认值不同 5.5 中,(默认不清楚,查看:show variables where Variable_name = 'innodb_autoinc_lock_mode';) 8.0 中,默认 innodb_autoinc_lock_mode = 2 https://github.com/bichengfei/MySQL/blob/master/InnoDB/6/6.1/6.1.InnoDB%E4%B8%ADauto_increment%E5%A4%84%E7%90%86%EF%BC%88%E5%AE%98%E7%BD%91%E7%89%88%EF%BC%89.md |
9 BQsummer Oct 1, 2021 小版本升级坑会少很多;没有很强烈的理由要升到 8 |
10 GoRoad Oct 14, 2021 可以看看 mariadb |
11 jasonkayzk Oct 14, 2021 @myd #6 貌似是 5.x 导出的 SQL,在 8.x 中语法不兼容; |
12 marktask Oct 15, 2021 没什么特殊需求不要大版本升级,没什么问题不要小版本更新,能稳定运行就不要升级了 |