将官网上下载下来的包上传到/usr/local下,本次升级一共三个包。 [本文中用到的软件包已经上传到百度网盘](链接:pan.baidu.com/s/1HDy8Aw5L… 提取码:13b4)
安装mysql5.7

设置主机名
[root@localhost ~]# hostnamectl set-hostname db01
编写/etc/hosts文件
[root@localhost ~]# vim /etc/hosts
把设置的主机名加上去
创建数据库管理用户
[root@localhost ~]# useradd mysql
创建数据和日志目录
[root@db01 ~ ]# mkdir -p /data/mysql/data_3306
[root@db01 ~ ]# mkdir -p /data/mysql/binlog_3306
解压mysql5.7软件
[root@db01 ~]# cd /usr/local/
[root@db01 local]# tar -xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
制作软链接
[root@db01 local]# ln -s mysql-5.7.26-linux-glibc2.12-x86_64 mysql57
环境变量设置
在文件末尾加上以下环境变量
Vim /etc/profile
export PATH=/usr/local/mysql57/bin:$PATH
保存退出
使用[root@db01 local]# source /etc/profile使环境变量生效
执行mysql -V查看版本情况

权限设置
[root@db01 local]# chown -R mysql.mysql /data /usr/local/mysql*
初始化
[root@db01 local]# yum install -y libaio-devel
[root@db01 local]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3306


在编辑/etc/my.cnf文件之前,要先卸载maridb,在centos7.3之后默认都会有maridb的配置文件存在于系统之中。
[root@db01 local]# yum remove -y mariadb-libs
(1) 配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3306
socket=/tmp/mysql.sock
server_id=6 #大多是在进行主从复制会用到的
log_bin=/data/mysql/binlog_3306
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
(2)准备启动文件
[root@db01 local]# cd /usr/local/mysql57/support-files/
[root@db01 support-files]# ll
total 24
-rw-r--r--. 1 mysql mysql 773 Apr 13 2019 magic
-rwxr-xr-x. 1 mysql mysql 1061 Apr 13 2019 mysqld_multi.server
-rwxr-xr-x. 1 mysql mysql 894 Apr 13 2019 mysql-log-rotate
-rwxr-xr-x. 1 mysql mysql 10576 Apr 13 2019 mysql.server
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld
[root@db01 support-files]# chkconfig --add mysqld
[root@db01 support-files]# systemctl start mysqld

升级到8.0版本
下载目标版本的mysqlsh,并解压创建软链接
[root@db01 local]# tar xf mysql-shell-8.0.18-linux-glibc2.12-x86-64bit.tar.gz
[root@db01 local]# ln -s mysql-shell-8.0.18-linux-glibc2.12-x86-64bit mysql-sh
修改环境变量
[root@db01 local]# vim /etc/profile
将刚才mysql5.7的环境变量修改为
#export PATH=/usr/local/mysql57/bin:/usr/local/mysql-sh/bin:$PATH
[root@db01 local]# source /etc/profile
使用mysqlsh检查原版本兼容情况
(1) 在5.7 数据库授权用户
mysql> grant all on *.* to root@'192.168.59.%' identified by '123';
(2) 检查并处理不兼容的事项
[root@db01 local]# mysqlsh root:123@192.168.59.129:3306 -e "util.checkForServerUpgrade()" > /tmp/upgrade.log
至此就可以通过查看文件清楚有哪些不利于升级的条件。
(3)开始解压安装包准备升级
#cd /usr/local/
# tar xf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
#ln -s mysql-8.0.18-linux-glibc2.12-x86_64 mysql8
8017之后,是用高本版的软件去读取低版本的数据来完成升级
-- 1. 修改配置文件
vim /etc/my.cnf
[mysqld]
user=mysql
#basedir=/usr/local/mysql57
basedir=/usr/local/mysql8
datadir=/data/mysql/data_3306
socket=/tmp/mysql.sock
server_id=6
log_bin=/data/mysql/binlog_3306
port=3306
[mysql]
socket=/tmp/mysql.sock
-- 2. 改环境变量
vim /etc/profile
#export PATH=/usr/local/mysql57/bin:/usr/local/mysql-sh/bin:$PATH
export PATH=/usr/local/mysql8/bin:/usr/local/mysql-sh/bin:$PATH
source /etc/profile
(4)停止原来的数据库
#systemctl stop mysqld
(5)拷贝程序文件
# cd /usr/local/mysql8/support-files/
#cp mysql.server /etc/init.d/mysqld
(6)启动程序
#/etc/init.d/mysqld start

注:在生产环境下请注意使用此方法,因为mysql8.17版本后默认是回退不了mysql5.7及之前的版本。生产环境下升级前要做好备份工作,默认采用的是数据迁移的操作。就地升级请慎重。