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,备注:水煮数据库, 我拉你入群。

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

<think>好的,用户想在Linux上将MySQL升级8.4.2版本。首先,我需要确认MySQL的官方版本情况。目前已知的稳定版本是8.0.x,而8.4.2可能不是官方发布的版本。可能需要提醒用户检查版本号是否正确。 接下来,升级步骤通常包括备份数据、停止当前服务、添加新仓库或下载包、安装新版本、配置和启动服务。但需要根据不同的Linux发行版(如CentOS、Ubuntu)给出具体命令。例如,Ubuntu使用apt,CentOS用yum或dnf。 另外,用户可能没有考虑到升级后的配置调整,比如权限检查和兼容性问题。需要提醒他们运行mysql_upgrade命令,并检查配置文件是否有变动。同时,备份是至关重要的,避免数据丢失。 还要注意,如果用户是从较旧的版本(如5.7升级8.x,可能需要执行额外的步骤,比如先升级到中间版本。但用户提到的是8.4.2,可能是一个笔误,应该确认版本是否存在。 最后,生成相关问题时要覆盖备份方法、回滚方案、兼容性检查以及特定发行版的升级步骤,帮助用户全面了解升级过程和相关注意事项。</think>### 分步升级MySQL8.4.2版本(注:截至20247月,MySQL官方最新稳定版本为8.0.x,8.4.2可能为误写,建议先验证版本号) 1. **数据备份(关键步骤)** ```bash mysqldump -u root -p --all-databases > full_backup.sql ``` 使用`FLUSH TABLES WITH READ LOCK`确保备份一致性[^3] 2. **停止MySQL服务** ```bash systemctl stop mysql ``` 3. **添加官方仓库(以Ubuntu为例)** ```bash wget https://dev.mysql.com/get/mysql-apt-config_0.8.28-1_all.deb sudo dpkg -i mysql-apt-config_0.8.28-1_all.deb ``` 4. **执行升级操作** ```bash sudo apt update sudo apt install mysql-server ``` 5. **启动并验证** ```bash systemctl start mysql mysql -V ``` ### 重要注意事项 1. 检查配置文件`/etc/mysql/my.cnf`兼容性 2. 执行升级检查工具: ```sql mysql_upgrade -u root -p ``` 3. 验证表结构兼容性(特别是使用VARCHAR列的情况)[^3]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值