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
相关推荐
闲云自留地24 分钟前
主库倒下 30 秒自动扶正:MySQL MHA 高可用实战
数据库·mysql
三少爷的鞋11 小时前
AI 时代,我们都将成为通才型开发者:只懂 Android,已经不够了
android
hasty11 小时前
policy.xml 在,不代表策略生效:ImageMagick 补丁给安全配置验收的提醒
xml·mysql·安全
Dovis(誓平步青云)14 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
晚风叙码16 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程17 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
做运维的阿瑞17 小时前
SQL 面试高频:用户、商品、订单三表查询全解析
数据库·sql·mysql
CJi0NG18 小时前
【自用】MySQL - 语法:DDL、DML、DQL、DCL
数据库·mysql
一技安身19 小时前
【mysql】Windows MySQL 8.4.10 绿色免安装喂饭教程
windows·mysql·adb
斯内普吖19 小时前
(开源)宠物饲养系统实战指南 基于 Java + SSM + Vue + MySQL
java·vue.js·mysql·开源·宠物