MySQL8.0.30升级8.0.46完整操作手册(含回滚方案)

📅 2026/8/18 14:22:43
MySQL8.0.30升级8.0.46完整操作手册(含回滚方案)
一、前言本次将MySQL8.0.30版本升级至8.0.46官方稳定版核心目的是修复旧版本已知漏洞、优化数据库性能、提升系统稳定性与安全性适配业务长期稳定运行需求。本次升级采用前置不停机准备短停机窗口升级的平滑升级方案前期准备工作无需停机核心程序切换、数据迁移阶段必须停机。升级核心改造为程序与数据目录分离彻底解决旧版软链接路径依赖问题。操作全程需保留旧版本程序目录用于应急回滚升级前必须完成全量数据、数据目录备份、配置文件备份严格按停机窗口规范执行操作所有校验全部通过后方可恢复业务流量杜绝数据丢失与业务异常风险。二、前置准备业务正常运行无需停机本阶段为升级前置筹备工作全程无需停机、不影响线上业务主要完成依赖安装、新版程序下载部署、全量数据及配置备份预留完整旧版本环境用于后续应急回滚。核心数据迁移、程序切换等高危操作统一在停机窗口执行1、安装依赖组件# 执行命令安装MySQL运行所需依赖已安装可直接跳过yuminstalllibaio-y2、下载MySQL8.0.46官方安装包# 创建工具目录下载适配系统的官方安装包并校验文件完整性mkdir-p/optcd/opt# 官方归档下载安装包wget--no-check-certificate-chttps://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.46-linux-glibc2.17-x86_64.tar.xz# 校验安装包是否完整下载ls-lhmysql-8.0.46-linux-glibc2.17-x86_64.tar.xz3、解压部署新版程序部署完成后服务器共存新旧两个程序目录mysql-8.0.30-el7-x86_64旧版用于回滚、mysql-8.0.46新版待升级)# 将安装包解压至指定目录标准化目录名称配置运行用户权限实现新旧程序目录共存旧目录禁止删除# 解压程序至/data目录tar-Jxvfmysql-8.0.46-linux-glibc2.17-x86_64.tar.xz-C/home# 重命名目录mv/home/mysql-8.0.46-linux-glibc2.17-x86_64 /home/mysql-8.0.46# 授权运行用户权限chown-Rmysql:mysql /home/mysql-8.0.464、全库逻辑备份/home/mysql/bin/mysqldump\--single-transaction\--source-data2\--set-gtid-purgedOFF\--routines\--triggers\--events\--hex-blob\--quick\--column-statistics0\--default-character-setutf8mb4\--max-allowed-packet1G\--databasesorange\-h192.168.11.133\-P3306\-umysql-p\2/data/db_bak/mysql8030_dump_$(date%F).err\/data/db_bak/mysql8030_full_$(date%Y%m%d).sql5、备份配置及启停脚本可选有的话就不用备份cp/home/mysql/my.cnf /data/my.cnf.bak.$(date%Y%m%d)cp/home/mysql/startMysql.sh /data/startMysql.sh.bakcp/home/mysql/stopMysql.sh /data/stopMysql.sh.bak6、创建独立数据、binlog日志目录mkdir-pv/home/mysql_datachown-Rmysql.mysql /home/mysql_datamkdir-p/home/mysql_binlogchown-Rmysql:mysql /home/mysql_binlog三、停机窗口升级操作本阶段需短暂停止数据库服务完成数据目录迁移、软链接切换、配置文件修改实现程序与数据分离改造1、停止MySQL服务并清理残留进程注意进入停机窗口后优先关停所有连接该MySQL实例的业务服务、应用程序、定时任务彻底断开数据库读写连接避免存在活跃事务、长连接导致数据库无法正常停机、数据备份不一致、升级异常等问题。确认业务全部停止、无新增数据库连接后再执行数据库停机操作su- mysql# 正常停止数据库sh/home/mysql/stopMysql.sh# 检查残留进程ps-ef|grepmysqld# 存在残留进程则强制查杀pkill-9mysqld2、迁移数据与binlog日志目录程序数据分离冷备份迁移旧版数据、binlog日志至独立固定目录彻底脱离程序目录依赖# 迁移业务数据文件cp-a/home/mysql-8.0.30-el7-x86_64/data/* /home/mysql_data/# 迁移二进制日志文件cp-a/home/mysql-8.0.30-el7-x86_64/binlog/* /home/mysql_binlog/3、 切换程序软链接至新版root用户执行# 删除旧版本软链接rm-f/home/mysql# 创建新版程序软链接ln-s/home/mysql-8.0.46 /home/mysql# 校验权限chown-Rmysql:mysql /home/mysql4、同步配置文件并修改路径参数su- mysql# 进入旧版目录拷贝配置、启停脚本至新版目录cd/home/mysql-8.0.30-el7-x86_64cp-amy.cnf startMysql.sh stopMysql.sh../mysql-8.0.46# 进入新版目录创建日志目录cd/home/mysql-8.0.46mkdirlog# 修改数据目录绝对路径sed-is#datadir /home/mysql/data#datadir /home/mysql_data#g/home/mysql/my.cnf# 修改binlog日志绝对路径sed-is#log-bin/home/mysql/binlog/mysql-bin.log#log-bin/home/mysql_binlog/mysql-bin.log#g/home/mysql/my.cnf5、校验配置修改结果# 校验数据目录配置grepdatadir /home/mysql/my.cnf# 预期输出datadir /home/mysql_data# 校验日志目录配置greplog-bin /home/mysql/my.cnf# 预期输出log-bin/home/mysql_binlog/mysql-bin.log# 检验配置修改没问题删除旧日志索引文件存在索引文件还是会找以前的binlog日志会报错rm-f/home/mysql_binlog/mysql-bin.index6、启动数据库并自动升级数据字典# 启动MySQL服务sh/home/mysql/startMysql.sh# 实时监控日志确认升级无报错、升级完成tail-f/home/mysql/log/mysqld.err四、升级后校验必做全部通过方可放开业务1、校验数据库版本mysql--version# 预期输出mysql Ver 8.0.46 for Linux on x86_64 (MySQL Community Server - GPL)2、校验业务数据完整性校验标准业务库、核心表数据行数与升级前一致存储过程、触发器、定时任务无缺失、无异常# 登录数据库(都是mysql用户执行)mysql-umysql-h内网-P3306-p# 核对业务库数据USE 业务库;SELECT COUNT(*)FROM 核心业务表;# 校验存储过程、触发器、事件正常SHOW PROCEDURE STATUS;SHOW TRIGGERS;五、升级故障完整回滚方案若升级后出现启动异常、数据错误、业务报错等问题需优先关停所有关联业务服务、断开数据库连接再立即执行以下回滚操作恢复旧版数据库环境避免回滚过程中存在读写请求引发数据异常su- mysql# 1. 停止新版MySQL服务sh/home/mysql/stopMysql.sh# 2. 删除新版软链接切回旧版8.0.30程序root用户执行rm-f/home/mysqlln-s/home/mysql-8.0.30-el7-x86_64 /home/mysql# 3. 修复目录权限chown-Rmysql:mysql /home/mysql# 4. 启动旧版数据库恢复业务su- mysqlsh/home/mysql/startMysql.sh六、Mysql启动优化用systemctl管理1、mysqld.service 完整文件cat/usr/lib/systemd/system/mysqld.serviceEOF [Unit] DescriptionMySQL 8.0.46 Database Server Documentationhttps://dev.mysql.com/doc/refman/8.0/en/ Afternetwork.target [Service] Usermysql Groupmysql Basedir/home/mysql ExecStart/home/mysql/bin/mysqld --defaults-file/home/mysql/my.cnf ExecStop/home/mysql/bin/mysqladmin --defaults-file/home/mysql/my.cnf shutdown PIDFile/home/mysql/mysqld.pid Restarton-failure RestartSec5 LimitNOFILE100000 LimitSTACK256M [Install] WantedBymulti-user.target EOF2、生效服务配置# 重载systemd配置systemctl daemon-reload# 设置开机自启systemctlenablemysqld3、日常运维命令# 启动MySQLsystemctl start mysqld# 优雅停止MySQLsystemctl stop mysqld# 重启MySQLsystemctl restart mysqld# 查看运行状态systemctl status mysqld# 实时跟踪数据库日志journalctl-umysqld-f# 查看最近100行日志journalctl-umysqld-n100# 取消开机自启systemctl disable mysqld# 查看是否开机自启systemctl is-enabled mysqld4、配套校验说明1、切换软链接升级 / 回滚 MySQL 版本无需修改此service文件2、LimitNOFILE100000解决启动时 max_open_files 警告3、使用 mysqladmin 优雅关闭避免强制kill丢失事务4、运行用户固定 mysql和 my.cnfusermysql 匹配权限统一七、整体操作注意事项- 前置准备阶段全程无业务影响必须完整执行备份操作备份文件需确认生成成功 - 旧版本程序目录禁止删除全程保留作为唯一回滚环境 - 核心升级操作必须在业务低峰期停机窗口执行前置准备可不停机操作严禁不停机执行服务停止、数据迁移、软链接切换等高危操作 - 配置文件路径修改必须核对无误避免目录权限、路径错误导致启动失败 - 升级后必须完成全量校验未全部通过严禁放开业务流量 - 回滚操作需快速执行回滚完成后立即校验业务可用性排查异常原因。