Mysql 版本升级-二进制安装方式

8.0.20 -8.0.40

总体参考见下

fw_error_www

前置环境说明

glibc 版本,安装mysql二进制文件时需要匹配,安装的版本只能比系统的低

shell 复制代码
ldd --version

# 查看库的位置
ldd `which top` | grep "libc.so"

逻辑备份

卸载旧版本相关数据(注意,如果不存在时才卸载)谨慎操作

shell 复制代码
yum list installed | grep mariadb
yum list installed | grep mysql
# 如果是刚装的centos 一般有 mariadb

注意这里的 glibc 版本,需要低于机器上的版本

shell 复制代码
## 安装部分参考语句
tar xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz -C /usr/local

# 创建 Mysql 相关的用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 创建 mysql 的数据文件夹
cd /usr/local/mysql
mkdir data
chown mysql:mysql data
chmod 750 data

# /etc/my.cnf 注意这个配置文件如果有,需要删除,或者重新配置,一般会有
# 初始化
bin/mysqld --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --console
# 可选
cp support-files/mysql.server /etc/init.d/mysql
service mysql start

./bin/mysql -uroot -p
# 可选 设置 mysql 的指令 到 /etc/profile
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
# 修改密码
ALTER user 'root'@'localhost' IDENTIFIED BY 'your new password';
# 或者
ALTER USER USER() IDENTIFIED BY 'your new password';

## 升级部分参考语句
# 设置参数,保证数据完整性
SET GLOBAL innodb_fast_shutdown=0;    # 设置innodb_fast_shutdown
SHOW GLOBAL VARIABLES LIKE '%innodb_fast_shutdown%'; 

# 备份
bin/mysqldump -u root -p --add-drop-table --routines --events --all-databases --force > /root/data-for-upgrade.sql
# 关闭
bin/mysqladmin -u root -p shutdown
# 启动
bin/mysqld_safe --user=mysql --datadir=/usr/local/mysql/data & 
# 恢复
bin/mysql -u root -p --force < /root/data-for-upgrade.sql
# 重新启动并执行升级,观察日志成功后重启
bin/mysqld_safe --user=mysql --datadir=/usr/local/mysql/data --upgrade=FORCE & 

小结

老版本:设置关闭参数->备份->关闭->文件夹移动

新版本: 安装->文件夹移动->创建新的数据文件->使用新数据文件夹初始化->使用新数据文件夹启动->登录修改密码->恢复数据库文件->关闭->更新模式启动->观察日志成功后关闭->再次正常模式启动

inplace 备份

前置安装过程相同,不需要备份sql文件

用新 mysql,指定原来的data文件夹启动即可,需要注意文件夹下文件的权限,可能存在子文件权限不对的情况,使用 chrown -R 重置

或者复制的时候注意使用完全复制 -ap

在 8.0.16 之后,无需更多操作,如果是之前需要手动执行升级

shell 复制代码
mysql_upgrade -u root -p
# 关闭后再重启即可

小结

老版本: 设置关闭参数->关闭

新版本: 使用老数据文件夹启动->观察日志等待完成->重启

相关推荐
chat2tomorrow40 分钟前
数据采集平台的起源与演进:从ETL到数据复制
大数据·数据库·数据仓库·mysql·低代码·postgresql·etl
依稀i1231 小时前
Spring Boot + MySQL 创建超级管理员
spring boot·mysql
驾驭人生1 小时前
Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
数据库·mysql·.netcore
xhbh6662 小时前
不止是DELETE:MySQL多表关联删除的JOIN语法实战详解
数据库·mysql·程序员·mysql删除语句
知其然亦知其所以然2 小时前
面试官微笑发问:第100万页怎么查?我差点当场沉默…
后端·mysql·面试
Mr_hwt_1234 小时前
基于mybatis-plus动态数据源实现mysql集群读写分离和从库负载均衡教程(详细案例)
数据库·spring boot·mysql·mybatis·mysql集群
DemonAvenger4 小时前
MySQL内存优化:缓冲池与查询缓存调优实战指南
数据库·mysql·性能优化
weixin_456904275 小时前
MySQL高级特性详解
数据库·mysql
Mr_hwt_1236 小时前
基于MyCat 中间件实现mysql集群读写分离与从库负载均衡教程(详细案例教程)
数据库·mysql·中间件·mysql集群
zhong liu bin7 小时前
MySQL数据库面试题整理
数据结构·数据库·mysql