MySQL在CentOS上如何升级
导读:在 CentOS 上升级 MySQL 的完整步骤 一 升级前准备 备份全部数据(强烈建议):使用逻辑备份覆盖所有库与对象,示例:mysqldump -u root -p --all-databases --routines --trigg...
在 CentOS 上升级 MySQL 的完整步骤
一 升级前准备
- 备份全部数据(强烈建议):使用逻辑备份覆盖所有库与对象,示例:
mysqldump -u root -p --all-databases --routines --triggers --single-transaction --hex-blob > /root/mysql_full_backup_$(date +%F).sql。备份文件妥善离线保存。 - 检查当前版本与运行状态:
mysql -V、systemctl status mysqld。确认数据目录位置(默认 /var/lib/mysql)与配置文件路径(常见 /etc/my.cnf 或 /etc/my.cnf.d/)。 - 检查是否存在 mariadb 并与 MySQL 并存引发冲突:
rpm -qa | grep -i mariadb。如共存需先统一处理(迁移或卸载),避免包冲突。 - 规划版本路径:优先采用同系列小版本升级;跨大版本(如 5.7 → 8.0)需充分回归测试,并留意认证插件、SQL 模式、系统变量等兼容性差异。
- 准备回滚方案:保留旧版本安装包与数据目录快照(停机快照或 LVM 快照),以便异常时快速回退。
二 原地升级步骤(In-place,推荐)
- 安装或更新 MySQL 官方 YUM 仓库(以 CentOS 7/8 为例,选择与你系统匹配的版本):
- CentOS 7:
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm & & sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm - CentOS 8:
wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm & & sudo rpm -ivh mysql80-community-release-el8-3.noarch.rpm
- CentOS 7:
- 选择目标版本(如需非默认版本):编辑
/etc/yum.repos.d/mysql-community.repo,将目标版本的enabled=1,其他版本enabled=0。 - 执行升级:
sudo yum update mysql-community-server(仅升级服务器)或sudo yum update(系统范围内升级相关包)。 - 重启服务:
sudo systemctl restart mysqld & & sudo systemctl enable mysqld。 - 获取初始临时密码并修改:
sudo grep 'temporary password' /var/log/mysqld.log,随后mysql -u root -p登录并执行ALTER USER 'root'@'localhost' IDENTIFIED BY 'Your_Strong_P@ssw0rd!';。 - 运行安全加固:
sudo mysql_secure_installation(按需设置密码策略、移除匿名用户、禁止 root 远程等)。
三 跨大版本升级要点(如 5.7 → 8.0)
- 兼容性自检:重点核对认证插件(5.7 常见
mysql_native_password,8.0 默认caching_sha2_password)、已安装插件、SQL 模式、GTID、复制拓扑、定时事件与存储过程等。 - 升级前准备:确保
innodb_fast_shutdown=1,干净关闭:sudo systemctl stop mysqld。 - 执行升级:启动到新版本后,使用内置升级机制完成系统表与数据字典升级(MySQL 8.0 启动过程会自动执行,无需额外命令)。
- 密码与权限:8.0 对密码强度与认证插件更严格,必要时调整用户插件与密码策略:
ALTER USER 'user'@'host' IDENTIFIED WITH caching_sha2_password BY 'pwd';或改回mysql_native_password。 - 复制与高可用:主从/组复制需按官方指引逐节点升级,先确保 SQL/IO 线程正常,再滚动升级其他节点。
- 回归测试:业务功能、性能与告警回归,重点验证登录认证、权限、SQL 兼容性、XA、触发器/事件、InnoDB 全文索引等。
四 验证与回滚
- 版本与状态验证:
mysql -V、mysql -e "SELECT VERSION(); "、systemctl status mysqld。 - 数据一致性抽检:校验关键库表行数与代表性查询。
- 应用连通性:应用配置、连接池、字符集与 SSL/TLS 设定复查。
- 回滚方案:
- 原地回滚:使用旧版本 RPM 包
sudo yum downgrade mysql-community-server-< 旧版本>,恢复配置文件与数据目录(如有快照优先用快照)。 - 重建回滚:导入升级前全量逻辑备份:
mysql -u root -p < /root/mysql_full_backup_YYYY-MM-DD.sql。
- 原地回滚:使用旧版本 RPM 包
- 常见故障排查:
- 启动失败:查看错误日志
/var/log/mysqld.log,常见为权限/磁盘/配置冲突。 - 无法登录:确认
skip-grant-tables未误开启,或使用临时密码路径/var/log/mysqld.log重置密码。 - 包冲突:卸载冲突的 mariadb 包或调整仓库优先级后再安装。
- 启动失败:查看错误日志
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MySQL在CentOS上如何升级
本文地址: https://pptw.com/jishu/749714.html
