CentOS 中 MySQL 版本选择指南
一、选择原则
- 优先选择仍在维护的版本:当前主流为 MySQL 8.0 与 MySQL 5.7。如无历史包袱,建议优先 8.0(功能、性能、优化器与安全性更优);若应用强依赖旧语法/驱动,再选 5.7。
- 以应用与生态为先:确认框架、ORM、驱动、复制/分片等组件对目标版本的兼容性(如是否支持 caching_sha2_password、JSON/窗口函数等 8.0 特性)。
- 结合系统代次:CentOS 7/8 均可通过官方 YUM 源安装 5.7/8.0,选择与系统匹配的 el7/el8 仓库包。
- 统一与可维护性:同环境尽量统一小版本,便于补丁、监控、备份与审计策略落地。
二、版本对比与适用场景
| 版本 |
关键特性 |
典型场景 |
注意事项 |
| MySQL 8.0 |
更强的 JSON/索引、窗口函数、数据字典、默认 caching_sha2_password、性能与优化器改进 |
新项目、需要高级 SQL、JSON/全文/地理信息、高并发与可观测性 |
升级需评估认证插件、SQL 模式、复制与驱动兼容性 |
| MySQL 5.7 |
JSON、生成列、GIS、性能优化、企业广泛验证 |
存量系统、依赖 5.7 语法/驱动、稳定性优先 |
功能与性能不及 8.0,长期新特性与优化较少 |
说明:8.0 在 JSON、窗口函数、优化器等方面明显增强;5.7 仍具备 JSON/GIS 等能力但整体特性更保守。若从 5.7 升级到 8.0,需关注认证与 SQL 兼容性风险。
三、快速决策建议
- 新项目或可做升级适配:选 MySQL 8.0(性能与特性更优,生态完善)。
- 存量系统且短期无法改造:选 MySQL 5.7(稳定性优先,降低迁移风险)。
- 需要企业级插件/监控/备份:可考虑 MySQL 企业版;否则用 社区版 即可。
四、在 CentOS 上落地所选版本的步骤
- 确认系统代次并安装对应官方源(选择 el7/el8 的仓库 RPM):
- 示例(CentOS 7,8.0 源):
- wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
- sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm
- 如需安装 5.7,在 /etc/yum.repos.d/mysql-community.repo 中启用 [mysql57-community] 并禁用 [mysql80-community](将 enabled=1/0 对调),然后执行:
- sudo yum clean all && sudo yum repolist enabled | grep mysql
- 安装服务器:sudo yum install mysql-community-server -y
- 启动与开机自启:sudo systemctl start mysqld && sudo systemctl enable mysqld
- 安全初始化:sudo mysql_secure_installation;如为 5.7,初始临时密码在 /var/log/mysqld.log(grep ‘temporary password’ /var/log/mysqld.log)
- 处理依赖冲突:若与 mariadb-libs 等冲突,先卸载冲突包再安装(生产环境请先备份与评估)。
五、升级与兼容性注意
- 认证插件:8.0 默认 caching_sha2_password,旧客户端可能不兼容;可在用户级改为 mysql_native_password 过渡。
- SQL/特性差异:8.0 引入 窗口函数、更完善的 JSON 支持与数据字典等,升级前在测试环境验证视图/存储过程/触发器/复制行为。
- 复制拓扑:主从/组复制跨版本需满足官方支持矩阵,先小流量灰度与回放验证。
- 回退预案:全量逻辑备份(如 mysqldump/xtrabackup),回滚脚本与演练到位。