当前位置: 首页 > news >正文

MySQL 5.7.42升级到MySQL 8.4.2

搜了一下,网上大部分都是MYSQL5.7升级到 8.0的,直接到8.4的,还不多,这里权当一个补充吧。

另外,5.7不能直接升级到8.4,需要先升级到8.0.X,然后再升级到8.4.X

下面是具体的安装及升级流程:

目录

1、5.7.42 安装

1.1 检查GLIBC版本

1.2 上传软件包

1.3 解压软件

1.4 创建mysql用户及组

1.5 安装依赖包

1.6 创建存放数据库的目录

1.7 给目录授权

1.8 MYSQL初始化

1.9 编辑MYSQL配置文件

1.10启动数据库

1.11修改root密码

1.12 设置远程连接

1.13 开机自启动

1.14 创建测试库

2、升级到MYSQL8.0.36

2.1 检查兼容性

2.2 备份5.7.42数据库

2.3 备份5.7.42参数文件

2.4 停数据库

2.5 备份5.7安装文件

2.6 冷备份5.7.42数据库

2.7 删除basedir文件

2.8 备份5.7.42启动文件

2.9 上传8.0.36安装包

2.10    解压安装包

2.11    拷贝文件到BASEDIR

2.12    修改权限

2.13    拷贝8.0.36 mysql.server到/etc/init.d/

2.14    注释 用于红帽的锁目录

2.15    升级

2.16    验证

2.17    把MYSQL加入PATH环境变量

3、升级8.0.36到8.4.2

3.1 升级前准备

3.1.1    备份8.0.36 数据库

3.1.2    干净的关闭数据库

3.1.3    冷备份8.0.36数据目录

3.1.4    备份8.0.36安装目录

3.1.5    备份8.0.36配置文件

3.2 8.0.36升级到8.4.2

3.2.1    解压8.4.2安装文件

3.2.2    删除8.0.36 的安装文件

3.2.3    拷贝8.4.2安装文件

3.2.4    修改权限

3.2.5    调整参数

3.2.6    拷贝 mysql.server 到/etc/init.d/mysql, 并注释用于红帽的锁目录

3.2.7    升级到8.4.2

验证


1、5.7.42 安装

1.1 检查GLIBC版本

[root@sztech home]# ldd --version

ldd (GNU libc) 2.17

1.2 上传软件包

sftp> cd /data/setup/mysql

sftp> lcd C:\soft\mysql

sftp> put mysql-5.7.42-el7-x86_64.tar.gz

Uploading mysql-5.7.42-el7-x86_64.tar.gz to /data/setup/mysql/ mysql-5.7.42-el7-x86_64.tar.gz

  100% 696203KB 139240KB/s 00:00:05    

sftp>

1.3 解压软件

[root@sztech setup]# cp mysql-5.7.42-el7-x86_64.tar.gz /usr/local/mysql

[root@sztech mysql]# ll

[root@sztech setup]# cd /usr/local/mysql

[root@sztech mysql]#  tar -zxvf mysql-5.7.42-el7-x86_64.tar.gz

重命名一下改为

[root@sztech mysql]# ll

total 728568

drwxr-xr-x. 9 root root       129 Sep  1 22:02 mysql-5.7.42-el7-x86_64

-rw-r--r--. 1 root root 746050963 Sep  1 22:00 mysql-5.7.42-el7-x86_64.tar.gz

[root@sztech mysql]# mv mysql-5.7.42-el7-x86_64 mysql-5.7.42

[root@sztech mysql]# ll

total 728568

drwxr-xr-x. 9 root root       129 Sep  1 22:02 mysql-5.7.42

-rw-r--r--. 1 root root 746050963 Sep  1 22:00 mysql-5.7.42-el7-x86_64.tar.gz

[root@sztech mysql]#

1.4 创建mysql用户及组

#创建mysql用户组

[root@sztech mysql] groupadd mysql

#创建mysql用户并加入到mysql组

[root@sztech mysql] useradd -r -g mysql mysql

[root@sztech mysql]#echo “mysql” | passwd --stdin mysql

1.5 安装依赖包

如果没有,就安装。

yum install libaio

1.6 创建存放数据库的目录

mkdir -p /data/mysql

1.7 给目录授权

chown -R mysql:mysql /usr/local/mysql

chmod -R 755 /usr/local/mysql

chown -R mysql:mysql /data/mysql

chmod -R  775 /data/mysql

1.8 MYSQL初始化

[root@sztech mysql-5.7.42]# pwd

/usr/local/mysql/mysql-5.7.42

[root@sztech mysql-5.7.42]#

./bin/mysqld  --initialize  --user=mysql  --basedir=/usr/local/mysql/ 

--datadir=/data/mysql 

1.9 编辑MYSQL配置文件

vi /etc/my.cnf

        

[mysqld]

basedir=/usr/local/mysql

datadir=/data/mysql/

socket=/tmp/mysql.sock

port=3306

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

symbolic-links=0

max_connections=600

innodb_file_per_table=1

lower_case_table_names=1

character_set_server=utf8

[mysql]

socket=/tmp/mysql.sock

lower_case_table_names:是否区分大小写,1表示存储时表名为小写,操作时不区分大小写;0表示区分大小写;不能动态设置,修改后,必须重启才能生效。

character_set_server:设置数据库默认字符集,如果不设置默认为latin1

innodb_file_per_table:是否将每个表的数据单独存储,1表示单独存储;0表示关闭独立表空间,可以通过查看数据目录,查看文件结构的区别。

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这个配置表示启用了两种特定的 SQL 模式:其中,no_engine_substitution表示禁止自动替换存储引擎,strict_trans_tables表示启用严格的事务表模式。

1.10启动数据库

[root@sztech ~]# cd /usr/local/mysql/support-files/

[root@sztech support-files]# ll

total 24

-rwxr-xr-x. 1 mysql mysql   773 Dec 10  2020 magic

-rwxr-xr-x. 1 mysql mysql  1061 Dec 10  2020 mysqld_multi.server

-rwxr-xr-x. 1 mysql mysql   894 Dec 10  2020 mysql-log-rotate

-rwxr-xr-x. 1 mysql mysql 10576 Dec 10  2020 mysql.server

[root@sztech support-files]# ./mysql.server start

Starting MySQL. SUCCESS!

1.11修改root密码

[root@sztech support-files]# cd /usr/local/mysql/bin

[root@sztech bin]# ./mysql -uroot -p

mysql>

mysql> set password for root@localhost = password('root');

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Bye

1.12 设置远程连接

mysql -u root -p

use mysql;

update user set user.Host='%' where user.User='root';

flush privileges;

1.13 开机自启动

将服务文件拷贝到init.d下,并重命名为mysql

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

#赋予可执行权限

chmod +x /etc/init.d/mysql

#添加服务

chkconfig --add mysql

#显示服务列表

chkconfig --list

                  

附上服务相关命令

[root@sztech bin]# service mysql status

 SUCCESS! MySQL running (87175)
查看状态:service mysql status
重启:service mysql restart
启动:service mysql start
停止:service mysql stop

1.14 创建测试库

CREATE DATABASE IF NOT EXISTS example_db;

USE example_db;

CREATE TABLE IF NOT EXISTS users (

  id INT(11) NOT NULL AUTO_INCREMENT,

  name VARCHAR(50) NOT NULL,

  email VARCHAR(50) NOT NULL,

  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql> INSERT INTO users (name, email) VALUES

    -> ('张三', 'zhangsan@example.com'),

    -> ('李四', 'lisi@example.com'),

    -> ('王五', 'wangwu@example.com');

Select * from users;

2、升级到MYSQL8.0.36

2.1 检查兼容性

2.1.1  安装MYSQL-SHELL

sftp> put mysql-shell-8.0.36-1.el7.x86_64.rpm

[root@sztech setup]# rpm -Uvh mysql-shell-8.0.36-1.el7.x86_64.rpm --force --nodeps    

[root@sztech setup]#

[root@sztech setup]# mysqlsh --version

mysqlsh   Ver 8.0.36 for Linux on x86_64 - for MySQL 8.0.36 (MySQL Community Server (GPL))

[root@sztech setup]#

2.1.2  检查该版本是否可以升级到MySQL 8.0.36

[root@sztech setup]# mysqlsh -uroot -p -S /tmp/mysql.sock -e  "util.checkForServerUpgrade()"

2.2 备份5.7.42数据库

[root@sztech ~]# mysqldump -uhjroot -p --socket=/tmp/mysql.sock  --all-databases > /data/upgrade_bak/all_databases_backup_5742.sql

2.3 备份5.7.42参数文件

[root@sztech etc]# cp /etc/my.cnf /data/upgrade_bak/my.cnf_5742

2.4 停数据库

[root@sztech setup]# service mysql status

 SUCCESS! MySQL running (87175)

[root@sztech setup]# service mysql stop

Shutting down MySQL.. SUCCESS!

2.5 备份5.7安装文件

[root@sztech mysql]# mkdir /data/upgrade_bak/

[root@sztech mysql]# tar -cvzf /data/upgrade_bak/5742_base.tar.gz /usr/local/mysql

2.6 冷备份5.7.42数据库

[root@sztech mysql]# tar -cvzf /data/upgrade_bak/5742_data.tar.gz /data/mysql

2.7 删除basedir文件

[root@sztech mysql-5.7.42] cd /usr/local/mysql

[root@sztech mysql-5.7.42]# rm -rf bin

[root@sztech mysql-5.7.42]# rm -rf docs

[root@sztech mysql-5.7.42]# rm -rf include

[root@sztech mysql-5.7.42]# rm -rf lib

[root@sztech mysql-5.7.42]# rm -rf README

[root@sztech mysql-5.7.42]# rm -rf man

[root@sztech mysql-5.7.42]# rm -rf share

[root@sztech mysql-5.7.42]# rm -rf support-files

2.8 备份5.7.42启动文件

[root@sztech init.d]# cp /etc/init.d/mysql /data/upgrade_bak/mysql_5.7.42

2.9 上传8.0.36安装包

/data/setup/mysql/mysql-8.0.36-linux-glibc2.17-x86_64.tar

2.10    解压安装包

[root@sztech setup]# tar -xvf mysql-8.0.36-linux-glibc2.17-x86_64.tar

2.11    拷贝文件到BASEDIR

[root@sztech]# cp -av /data/setup/mysql/mysql-8.0.36-linux-glibc2.17-x86_64/* /usr/local/mysql/.

2.12    修改权限

[root@sztech mysql]# chown -R mysql:mysql /usr/local/mysql

[root@sztech mysql]# ll

total 296

drwxr-xr-x.  2 mysql mysql   4096 Dec 13  2023 bin

drwxr-xr-x.  6 mysql mysql   4096 Sep  3 09:51 data

drwxr-xr-x.  2 mysql mysql     38 Dec 13  2023 docs

drwxr-xr-x.  3 mysql mysql   4096 Dec 13  2023 include

drwxr-xr-x.  6 mysql mysql    201 Dec 13  2023 lib

-rw-r--r--.  1 mysql mysql 279356 Dec 13  2023 LICENSE

drwxr-xr-x.  4 mysql mysql     30 Dec 13  2023 man

-rw-r--r--.  1 mysql mysql    666 Dec 13  2023 README

drwxr-xr-x. 28 mysql mysql   4096 Dec 13  2023 share

drwxr-xr-x.  2 mysql mysql     77 Dec 13  2023 support-files

2.13    拷贝8.0.36 mysql.server到/etc/init.d/

[root@sztech support-files]# cp mysql.server /etc/init.d/mysql

2.14    注释 用于红帽的锁目录

修改/etc/init.d/mysql 

2.15    升级

[root@sztech init.d]# cd /usr/local/mysql/bin

[root@sztech bin]# ./mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --upgrade=FORCE

2.16    验证

[root@sztech bin]# ./mysql -uhjroot -p

Enter password:

mysql> show databases;

mysql> select version();

+-----------+

| version() |

+-----------+

| 8.0.36    |

+-----------+

1 row in set (0.00 sec)

2.17    把MYSQL加入PATH环境变量

[root@sztech bin]# source /etc/profile

  。。。

 export PATH=/usr/local/mysql/bin:%PATH

  source /etc/profile

 

[root@sztech bin]# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 12

Server version: 8.0.36 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

3、升级8.0.36到8.4.2

3.1 升级前准备

3.1.1    备份8.0.36 数据库

[root@sztech bin]# mysqldump -uroot -p --socket=/tmp/mysql.sock --all-databases > /data/upgrade_bak/all_databases_backup_8036.sql  

3.1.2    干净的关闭数据库

[root@sztech bin]# ./mysql -uroot -p

Enter password:

mysql>  show variables like 'innodb_fast_shutdown';

+----------------------+-------+

| Variable_name        | Value |

+----------------------+-------+

| innodb_fast_shutdown | 1     |

+----------------------+-------+

1 row in set (0.00 sec)

mysql> set global innodb_fast_shutdown=0;

Query OK, 0 rows affected (0.01 sec)

mysql> shutdown;

Query OK, 0 rows affected (0.01 sec)

mysql> exit

Bye

--确认已经没有进程

[root@sztech bin]# ps -ef | grep mysqld

root     113227 111745  0 13:23 pts/0    00:00:00 grep --color=auto mysqld

3.1.3    冷备份8.0.36数据目录

# tar -cvzf /data/upgrade_bak/8.0.36_data.tar.gz /data/mysql/

3.1.4    备份8.0.36安装目录

# tar -cvzf /data/upgrade_bak/8.0.36_base.tar.gz /usr/local/mysql

3.1.5    备份8.0.36配置文件

# cp /etc/my.cnf /data/upgrade_bak/8.0.36_my.cnf

      

3.2 8.0.36升级到8.4.2

3.2.1    解压8.4.2安装文件

tar -xvf mysql-test-8.4.2-linux-glibc2.17-x86_64.tar.xz

3.2.2    删除8.0.36 的安装文件

rm -fr /usr/local/mysql/*

3.2.3    拷贝8.4.2安装文件

# cp -av /data/setup/mysql/mysql-8.4.2-linux-glibc2.17-x86_64/* /usr/local/mysql/.

3.2.4    修改权限

# chown -R mysql: /usr/local/mysql

3.2.5    调整参数

8.4.2 部分参数已经去掉,默认情况下不再启用已弃用的 mysql_native_password 身份验证插件

vim /etc/my.cnf

mysql_native_password=on

3.2.6    拷贝 mysql.server 到/etc/init.d/mysql, 并注释用于红帽的锁目录

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

vim /etc/init.d/mysql

# lockdir=

# lock_file_path=

3.2.7    升级到8.4.2

root@sztech bin]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --upgrade=FORCE

验证

[root@sztech bin]# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 8

Server version: 8.4.2 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();

+-----------+

| version() |

+-----------+

| 8.4.2     |

+-----------+

1 row in set (0.01 sec)

4.联系我们


如果你还想和我交流,可以按如下方式找到我们。

----------------------------------------------------------------------
微信群:水煮数据库

主要交流日常运维中用到的数据库相关问题,包含但不限于:ORACLE,PG,MYSQL,SQLSERVER,OB,TIDB,达梦,TDSQL,OPENGAUSS,人大金仓,GBASE等等,

加我微信:zq24803366,备注:水煮数据库, 我拉你入群。

----------------------------------------------------------------------
 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • uniapp child.onFieldChange is not a function
  • js 3个事件监听器 EventListeners
  • Android Studio 安装配置教程(Windows最详细版)
  • 镀金引线---
  • 【楚怡杯】职业院校技能大赛 “云计算应用” 赛项样题四
  • 港迪技术IPO上市实施募投项目,带动公司多维度能力综合提升
  • Java 之多线程高级
  • 安卓13系统导航方式分析以及安卓13修改默认方式为手势导航 android13修改导航方式
  • 828华为云征文|华为Flexus云服务器搭建Cloudreve私人网盘
  • Java中的红黑树(如果想知道Java中有关红黑树的知识点,那么只看这一篇就足够了!)
  • 【渗透测试】-vulnhub源码框架漏洞-Os-hackNos-1
  • 运维工程师面试整理-数据库
  • el-input设置type=‘number‘和v-model.number的区别
  • Longman Dictionary of Contemporary English (朗文当代高级英语辞典)
  • 【ARM】Trustzone和安全架构
  • [译]前端离线指南(上)
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • angular2 简述
  • laravel with 查询列表限制条数
  • mysql_config not found
  • Python3爬取英雄联盟英雄皮肤大图
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue总结
  • 给初学者:JavaScript 中数组操作注意点
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 小程序button引导用户授权
  • 一个完整Java Web项目背后的密码
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 用jQuery怎么做到前后端分离
  • 组复制官方翻译九、Group Replication Technical Details
  • ​Linux·i2c驱动架构​
  • (4)STL算法之比较
  • (Java)【深基9.例1】选举学生会
  • (待修改)PyG安装步骤
  • (第一天)包装对象、作用域、创建对象
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (七)Flink Watermark
  • (四)鸿鹄云架构一服务注册中心
  • (五)关系数据库标准语言SQL
  • (一)u-boot-nand.bin的下载
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • 、写入Shellcode到注册表上线
  • .dwp和.webpart的区别
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net访问oracle数据库性能问题
  • .sh
  • /3GB和/USERVA开关
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ C++ ] STL_vector -- 迭代器失效问题