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
相关推荐
157092511344 小时前
Android进阶之光:HTTP协议原理深度解析
android·网络协议·http
风哥2号4 小时前
数据库教程FGMT27‑MySQL数据库基础知识与体系架构
数据库·mysql
终端安全笔记4 小时前
安卓五品牌通道差在哪:监管通道拆解
android
v_34836087625 小时前
Android native端 堆栈打印
android·算法
一笑的小酒馆5 小时前
AndroidKMP之导航和WebView
android
风哥2号7 小时前
数据库教程FGMT43‑MySQL性能分析与优化调整
数据库·mysql
2501_932750269 小时前
Android BottomNavigationView 入门介绍
android
默 语10 小时前
Java新手入门:从零开始安装JDK并配置环境变量
java·开发语言·python·mysql·group by·1024程序员节·数据去重
用户30745969820711 小时前
MySQL EXPLAIN 零基础完全精通指南:从"看不懂"到"会优化"
mysql
Godikov11 小时前
硬件异步事件下的业务一致性:智能柜领取/归还流程的竞态设计
android