mysql 8.0.21 升级 mysql 8.0.45(经过生产环境验证)

一、mysql升级

mysql 8.0.21 ----> mysql 8.0.45

二、环境准备

1 、下载安装包

mysql45

https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.45-linux-glibc2.17-x86_64.tar

MySQLshell

https://downloads.mysql.com/archives/get/p/43/file/mysql-shell-8.0.45-linux-glibc2.17-x86-64bit.tar.gz

2、解压方案

复制代码
初始化8.0的包
tar xf mysql-8.0.45-linux-glibc2.17-x86_64.tar
tar xf mysql-8.0.45-linux-glibc2.17-x86_64.tar.xz
mv  mysql-8.0.45-linux-glibc2.17-x86_64  /usr/local/

下载mysqlshell
tar xf mysql-shell-8.0.45-linux-glibc2.17-x86-64bit.tar.gz
mv mysql-shell-8.0.45-linux-glibc2.17-x86-64bit /usr/local/mysql80sh

处理
vim  /etc/profile
export PATH=/usr/local/mysql80sh/bin:$PATH

source /etc/profile

3、升级前的mysqlsh检查

复制代码
mysqlsh
util.checkForServerUpgrade('root@localhost:3306',{"targetVersion":"8.0.45"})

4、备份MySQL8.0.21,并做准备工作

复制代码
1)	检查磁盘空间是否足够
df -h

2)	创建备份文件
mkdir /tmp/mysqlbak/

3)	备份参数
mysql -uxxx -pxxx -Ne 'select * from performance_schema.global_variables;' >/tmp/mysqlbak/mysql8.0.21_sql_conf

4)	全备物理参数
cp /etc/my.cnf  /tmp/mysqlbak/my8.0.21_sql_conf

5)	检查并备份错误日志
cp   /data/mysql/mysqld.log   /tmp/mysqlbak/my_bak_error.log

三、开始升级

1、检查并备份老版本数据

复制代码
1) 设置只读
set global read_only=on;
set global super_read_only=on;

2)停止业务并备份位点信息
show  master status\G
vim /tmp/mysqlbak/master_gtid.txt

3) 数据写入磁盘
set global innodb_fast_shutdown=0;

4)	关闭数据库并检查
systemctl  stop mysql
ps -ef|grep mysqld_safe |grep -v grep
netstat -lntup  |grep  mysqld

5)	备份数据文件(使用客户的快照备份方案)
tar -czf  /tmp/mysqlbak/mysql8.0.21_data.tar.gz   /data/mysql/data

2、用MySQL8.0.45程序启动数据库

复制代码
1)	修改软连接
ln -s /usr/local/mysql-8.0.45-linux-glibc2.17-x86_64 mysql80
source /etc/profile

2)使用systemctl启动
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mysql80/bin/mysqld_safe --defaults-file=/etc/my.cnf
Restart=on-failure
RestartSec=10
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

2)生效
systemctl daemon-reload

4)	修改参数
vim /etc/my.cnf 
basedir=/usr/local/mysql80

5)MySQL8.0.45程序启动数据库
systemctl status  mysqld
systemctl start  mysqld

6)	检查是否启动
ps aux |grep mysqld_safe |grep -v grep
netstat -lntup  |grep  mysqld
mysql -uroot -p -e "show processlist;"

四、升级回退方案

注:此恢复方案仅限目标库还没有业务写入的时候用。

复制代码
1)	关闭数据库
systemctl stop  mysqld
ps aux |grep mysqld_safe |grep -v grep
netstat -lntup  |grep  mysqld

2)	备份错误日志
cp  /data/错误日志   /tmp/mysqlbak/

3)	恢复历史备份文件
rm -rf /data/
tar xf  /tmp/mysqlbak/mysql8.0.21_data.tar.gz  -C /data/
chown -R  mysql:mysql   /data/

2)	修改软连接
ln -s mysql-8.0.21-linux-glibc2.12-x86_64 mysql80
source /etc/profile

3)修改参数
vim /etc/my.cnf 
basedir=/usr/local/mysql

4)	修改systemctl
vim /etc/systemd/system/mysqld.service
ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf

5)	生效
systemctl daemon-reload

6)	启动数据库
systemctl start mysqld
7)	检查是否启动
ps -ef |grep mysqld_safe |grep -v grep
netstat -lntup  |grep  mysqld
mysql -uroot -p -e "show processlist
相关推荐
IT19955 小时前
Fail2Ban 防护 MySQL 实战|登录失败 3 次,IP 封禁 24 小时
数据库·mysql
paopaokaka_luck8 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
警醒与鞭策9 小时前
Codex桌面版与Claude桌面版使用设置
android·unity·ai·性能优化
lzhdim9 小时前
100条常用SQL语句
数据库·sql·mysql·mybatis
传奇开心果11 小时前
【Compose Multiplatform跨端声明式UI实用技术】第19课:多平台部署与发布
android·kotlin
红尘伴蝶舞12 小时前
加密拦截器让抓包失效,我只能从 4KB 的 logcat 碎片里拼回 JSON
android·kotlin·ai编程
booboosui12 小时前
219 个还是 0 个:读不到微信界面时,我只加不删
android
这个DBA有点耶12 小时前
2026年国产数据库“实际用户增长最快”核验指南:口径优先级、可查数据与选型动作清单
数据库·mysql·架构
Android打工仔12 小时前
Compose 中何时该用 padding,何时该用 offset
android·android jetpack
二流小码农12 小时前
HarmonyOS开发助手,0代码让元服务从开发到上架
android·ios·harmonyos