首页主机资讯centos中mysql版本升级步骤

centos中mysql版本升级步骤

时间2026-01-19 14:10:04发布访客分类主机资讯浏览1024
导读:CentOS 中 MySQL 版本升级步骤 一 升级前准备 备份与停机 全量逻辑备份:mysqldump -u root -p --all-databases --single-transaction --quick --lock-ta...

CentOS 中 MySQL 版本升级步骤

一 升级前准备

  • 备份与停机
    • 全量逻辑备份:mysqldump -u root -p --all-databases --single-transaction --quick --lock-tables=false > full-backup.sql
    • 备份配置与数据目录:cp -a /etc/my.cnf /etc/my.cnf.bak;cp -a /var/lib/mysql /var/lib/mysql.bak_$(date +%F)
    • 停止服务:systemctl stop mysqld
  • 检查现状
    • 当前版本:mysql -V 或 SELECT VERSION();
    • 系统环境:cat /etc/os-release;uname -r
  • 升级策略与兼容性要点
    • 建议按小版本→大版本逐级升级,避免一次性跨多代;跨大版本前先在测试环境演练。
    • 配置与特性差异(5.7→8.0 常见):
      • 默认字符集由 latin1 变为 utf8mb4;如业务敏感,可在 my.cnf 显式设置 character-set-server/collation-server。
      • 8.0 移除/调整部分 sql_mode(如 NO_AUTO_CREATE_USER 不再支持),需清理不兼容项。
      • 密码认证插件默认改为 caching_sha2_password;为兼容旧客户端可在 my.cnf 设置 default_authentication_plugin=mysql_native_password。
      • 8.0.16 起系统表升级由 mysqld 在首次启动时自动完成,不再需要手动执行 mysql_upgrade;更早版本需执行 mysql_upgrade。

二 升级路径与选择

  • 原地升级 In-Place(推荐,业务中断可控)
    • 保留现有数据目录,用新 RPM/二进制替换并启动,由新版本自动升级系统表;适用于小版本升级或 5.7→8.0 的跨版本升级。
  • 逻辑迁移(最稳妥,适合跨大版本或重构)
    • 用 mysqldump 导出全库,安装新版本后导入;适合跨大版本、跨平台或需要变更数据目录/存储引擎的场景。
  • 选择建议
    • 仅小版本补丁:优先原地升级(停机时间短、风险低)。
    • 5.7→8.0 或不确定兼容性:优先逻辑迁移;若采用原地升级,务必完成兼容性整改与充分演练。

三 原地升级步骤 YUM 通用

  • 添加或更新官方 YUM 仓库
    • 下载并安装仓库包(示例为 EL7):wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
    • 安装:yum localinstall mysql80-community-release-el7-1.noarch.rpm
    • 查看可用版本:yum repolist enabled | grep “mysql.-community.
    • 如需指定版本,编辑 /etc/yum.repos.d/mysql-community.repo,将目标版本的 enabled=1,其他版本 enabled=0
  • 执行升级
    • 升级所有 MySQL 组件:yum update mysql-community-server
    • 或仅安装新版本服务器:yum install mysql-community-server
  • 启动与验证
    • 启动:systemctl start mysqld;开机自启:systemctl enable mysqld
    • 查看版本:mysql -V 与 SELECT VERSION();
    • 如为 5.7→8.0,首次启动会自动升级系统表;若使用 8.0.16 之前版本,可能需要手动执行 mysql_upgrade。

四 原地升级步骤 RPM 或二进制包

  • RPM 就地升级(适用于已用 RPM 安装的场景)
    • 停止服务:systemctl stop mysqld
    • 备份配置与数据目录(见上)
    • 下载新版本 RPM 包(可按需选择具体子包),执行升级:rpm -Uvh mysql-community-*.rpm
    • 启动:systemctl start mysqld;验证版本
    • 如为 5.7→8.0 且版本低于 8.0.16,执行:mysql_upgrade -uroot -p
  • 二进制包就地升级(通用、可控性强)
    • 停止服务并备份
    • 解压新版本至目标目录(如 /usr/local/mysql8),保持原 my.cnf 中的 datadir、socket、log-error 等关键路径不变
    • 如从 5.7→8.0,建议先执行一次“预升级检查/强制升级”:/usr/local/mysql8/bin/mysqld --defaults-file=/etc/my.cnf --upgrade=FORCE
    • 启动:/usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf & 或使用 systemd 管理
    • 验证版本与系统表升级结果

五 升级后验证与回滚

  • 快速验证
    • 版本:mysql -V;SELECT VERSION();
    • 错误日志:tail -n50 /var/log/mysqld.log
    • 关键对象与权限:SHOW DATABASES; SHOW TABLES; SELECT COUNT(*) FROM mysql.user;
    • 复制/GTID(如启用):SHOW MASTER STATUS; SHOW SLAVE STATUS\G
  • 常见问题处理
    • 升级后版本未变化:检查是否安装了新包(rpm -qa | grep mysql-community),清理残留旧包(yum remove 旧版本;yum autoremove),确认 mysqld 路径与版本(which mysqld;/usr/sbin/mysqld --version),必要时重装 server 包并重启。
    • lower_case_table_names 变更:该参数在初始化后不可更改;如需统一为 1,需提前规划并在全新实例初始化后导入数据。
  • 回滚方案
    • 原地升级失败:用备份的 /var/lib/mysql.bak 与 /etc/my.cnf.bak 还原,恢复数据:systemctl stop mysqld;rsync -a /var/lib/mysql.bak/ /var/lib/mysql/;systemctl start mysqld
    • 逻辑迁移:直接切回旧实例,重新导入备份 SQL。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos中mysql版本升级步骤
本文地址: https://pptw.com/jishu/785800.html
centos中mysql集群搭建方法 centos下mysql权限设置指南

游客 回复需填写必要信息