news 2026/8/18 14:22:35

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL8.0.30升级8.0.46完整操作手册(含回滚方案)

一、前言

本次将MySQL8.0.30版本升级至8.0.46官方稳定版,核心目的是修复旧版本已知漏洞、优化数据库性能、提升系统稳定性与安全性,适配业务长期稳定运行需求。本次升级采用前置不停机准备+短停机窗口升级的平滑升级方案,前期准备工作无需停机,核心程序切换、数据迁移阶段必须停机。升级核心改造为程序与数据目录分离,彻底解决旧版软链接路径依赖问题。操作全程需保留旧版本程序目录用于应急回滚,升级前必须完成全量数据、数据目录备份、配置文件备份,严格按停机窗口规范执行操作,所有校验全部通过后方可恢复业务流量,杜绝数据丢失与业务异常风险。

二、前置准备(业务正常运行,无需停机)

本阶段为升级前置筹备工作,全程无需停机、不影响线上业务,主要完成依赖安装、新版程序下载部署、全量数据及配置备份,预留完整旧版本环境用于后续应急回滚。核心数据迁移、程序切换等高危操作统一在停机窗口执行

1、安装依赖组件

# 执行命令安装MySQL运行所需依赖,已安装可直接跳过yuminstalllibaio-y

2、下载MySQL8.0.46官方安装包

# 创建工具目录,下载适配系统的官方安装包,并校验文件完整性mkdir-p/opt&&cd/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.xz

3、解压部署新版程序

部署完成后,服务器共存新旧两个程序目录: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.46

4、全库逻辑备份

/home/mysql/bin/mysqldump\--single-transaction\--source-data=2\--set-gtid-purged=OFF\--routines\--triggers\--events\--hex-blob\--quick\--column-statistics=0\--default-character-set=utf8mb4\--max-allowed-packet=1G\--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).sql

5、备份配置及启停脚本

可选,有的话就不用备份

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.bak

6、创建独立数据、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-9mysqld

2、迁移数据与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/mysql

4、同步配置文件并修改路径参数

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.46&&mkdirlog# 修改数据目录绝对路径sed-i's#datadir = /home/mysql/data#datadir = /home/mysql_data#g'/home/mysql/my.cnf# 修改binlog日志绝对路径sed-i's#log-bin=/home/mysql/binlog/mysql-bin.log#log-bin=/home/mysql_binlog/mysql-bin.log#g'/home/mysql/my.cnf

5、校验配置修改结果

# 校验数据目录配置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.index

6、启动数据库并自动升级数据字典

# 启动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.service<<EOF [Unit] Description=MySQL 8.0.46 Database Server Documentation=https://dev.mysql.com/doc/refman/8.0/en/ After=network.target [Service] User=mysql Group=mysql 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 Restart=on-failure RestartSec=5 LimitNOFILE=100000 LimitSTACK=256M [Install] WantedBy=multi-user.target EOF

2、生效服务配置

# 重载systemd配置systemctl daemon-reload# 设置开机自启systemctlenablemysqld

3、日常运维命令

# 启动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 mysqld

4、配套校验说明

1、切换软链接升级 / 回滚 MySQL 版本,无需修改此service文件;2、LimitNOFILE=100000解决启动时 max_open_files 警告;3、使用 mysqladmin 优雅关闭,避免强制kill丢失事务;4、运行用户固定 mysql,和 my.cnfuser=mysql 匹配,权限统一

七、整体操作注意事项

- 前置准备阶段全程无业务影响,必须完整执行备份操作,备份文件需确认生成成功; - 旧版本程序目录禁止删除,全程保留,作为唯一回滚环境; - 核心升级操作必须在业务低峰期停机窗口执行,前置准备可不停机操作,严禁不停机执行服务停止、数据迁移、软链接切换等高危操作; - 配置文件路径修改必须核对无误,避免目录权限、路径错误导致启动失败; - 升级后必须完成全量校验,未全部通过严禁放开业务流量; - 回滚操作需快速执行,回滚完成后立即校验业务可用性,排查异常原因。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/18 14:22:03

告别黑屏闪退!免费开源神器让童年老游戏在新电脑重获新生

告别黑屏闪退&#xff01;免费开源神器让童年老游戏在新电脑重获新生 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDr…

作者头像 李华
网站建设 2026/8/18 14:06:52

TVA-World架构:AGI基础算法研究启示录(10)

前沿技术探索&#xff1a;TVA智能体&#xff08;简称TVA&#xff09;TVA智能体&#xff08;亦称“AI智能体视觉”或“TVA视觉智能体”&#xff09;是依托Transformer架构与“因式智能体”理论构建的系统级视觉技术框架。它融合深度强化学习&#xff08;DRL&#xff09;、卷积神…

作者头像 李华