温馨提示×

MySQL在Linux上如何升级版本

小樊
45
2025-11-16 10:20:05
栏目: 云计算

Linux 上升级 MySQL 的完整流程

一 升级前准备

  • 明确升级类型:先做小版本升级(同一 LTS 系列内,如 8.0.x → 8.0.y)通常更直接;跨 LTS大版本升级(如 5.7 → 8.0)需充分评估与测试。MySQL 支持小版本就地升级与跨 LTS 升级,但不支持跨多个主版本直接升级。升级前确认目标系统仍在受支持平台列表内。
  • 全量备份与可恢复性验证:备份所有业务库与系统库、配置文件、SSL 证书、复制元数据等,并进行恢复演练。示例:mysqldump -u root -p --all-databases --routines --triggers --single-transaction --quick --max_allowed_packet=512M > full-backup.sql
  • 兼容性检查:使用 MySQL Shell 的 Upgrade Checkerutil.checkForServerUpgrade())扫描数据类型、存储引擎、SQL 模式、系统变量等不兼容项并先行修复。
  • 测试与演练:在测试环境完整演练升级与回滚预案,包含应用兼容性、错误日志、性能基准测试;必要时让新旧版本并行运行一段时间验证稳定性。

二 升级方式与选择

  • 就地升级(In-place):用新版本替换服务器软件包,保留现有数据目录,流程快、风险相对可控,适合小版本或已充分验证的大版本升级。
  • 逻辑升级(Logical):通过 mysqldump/mysqlpump/mydumper 导出导入,跨平台/跨版本/跨实例迁移更灵活,适合大版本升级或重构场景。
  • 复制拓扑升级:在复制链路中逐台升级,按角色(主/从/组复制)制定顺序与一致性校验,适合高可用环境。

三 就地升级步骤(YUM/DNF 与 APT 示例)

  • 通用前置
    • 备份与兼容性检查(见上)。
    • 检查当前版本:mysql -VSELECT VERSION();
    • 确认新版本仓库已启用,并核验可安装版本:yum repolist all | grep mysql(YUM/DNF),或更新 APT 索引。
  • YUM/DNF(RHEL/CentOS/Fedora)
    1. 停止服务:sudo systemctl stop mysqld
    2. 升级软件包:sudo yum update mysql-server(或 sudo dnf update mysql-server
    3. 启动服务:sudo systemctl start mysqld
    4. 验证版本:mysql -VSELECT VERSION();
    5. 如版本未变化或命令路径仍指向旧版,检查已安装包与可执行文件:
      • rpm -qa | grep mysql-community(应仅见新版本)
      • which mysqld/usr/sbin/mysqld --version
      • 必要时清理冲突/残留包并重新安装:sudo yum remove mysql-community-server 后重装,再重启验证。
  • APT(Debian/Ubuntu)
    1. 停止服务:sudo systemctl stop mysql
    2. 更新索引并升级:sudo apt-get update && sudo apt-get install mysql-server
    3. 启动服务:sudo systemctl start mysql
    4. 验证版本:mysql -VSELECT VERSION();
  • 系统表升级
    • MySQL 8.0+ 多数情况下在首次启动时自动完成系统库升级;
    • 旧版本或提示需要时,执行:mysql_upgrade -u root -p --force,完成后重启。

四 逻辑升级步骤(跨大版本或跨平台推荐)

  • 使用 mysqldump 导出全量逻辑备份(建议包含存储过程、触发器、事件):
    mysqldump -u root -p --all-databases --routines --triggers --events --single-transaction --quick --max_allowed_packet=512M > full-backup.sql
  • 安装并初始化目标版本的新实例(不覆盖旧数据目录)。
  • 导入备份:mysql -u root -p < full-backup.sql
  • 启动新实例,执行版本与数据校验,逐步切流应用并观察错误日志与性能表现。

五 升级后验证与常见问题

  • 版本与服务:确认 mysql -VSELECT VERSION(); 显示目标版本;systemctl status mysqld/mysqlactive
  • 错误日志与兼容性:检查 error log 是否有升级告警/错误;复核 SQL mode、字符集、时区、权限与复制状态。
  • 性能回归:对比升级前后关键查询与负载,必要时调整索引、配置与优化器设置。
  • 认证与连接:如从 5.7 → 8.0,注意默认认证插件为 caching_sha2_password,确保客户端/驱动兼容;必要时调整用户认证方式并测试连接。
  • 常见问题速解
    • 升级后版本未变:检查是否安装了正确的包、是否存在多版本残留、可执行文件路径是否指向新版本(which mysqld/usr/sbin/mysqld --version),必要时清理并重装。
    • lower_case_table_names:修改该参数需谨慎,涉及数据目录与系统表一致性,务必先完整备份并在测试环境验证后再变更。
    • 系统表未升级:按提示运行 mysql_upgrade 并重启。

0