您的位置:首页 > 新闻 > 资讯 > MySQL 5.7.42升级到MySQL 8.4.2

MySQL 5.7.42升级到MySQL 8.4.2

2025/2/23 22:10:09 来源:https://blog.csdn.net/cqsztech/article/details/142340815  浏览:    关键词: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,备注:水煮数据库, 我拉你入群。

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com