赞
踩
1.注意事项:
生产环境一定注意:
1.升级之前,先备份,备份,备份(热冷备份都可以)
2.从5.6升级到8.0版本:
需要先5.6升级到最新版,再5.6最新升级到5.7最新版,然后5.7最新版升级到8.0版本
3.回退方案制定好,每升级一个版本进行备份一次,特别是升级到8.0(5.7升级到8.0无法就地回退)
4.升级过程中尽量降低业务影响时间
2.环境准备
系统:CentOS 7.5
IP: 10.0.1.52
hostname: db02-52
关闭防火墙-selinux-创建mysql用户-修改文件描述符
3.先安装mysql5.6.46版本
1.注意:
保证已经彻底删除原有mysql和mariadb及其配置文件和目录(百度一下你就知道)
2.数据库程序目录:/data/app/
数据库数据目录:/data/local/data
3.先解压mysql-5.6到/data/app目录下:
[root@db02-52 /data/app]# tar -xf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
4.做软连接,修改/data目录属性:
[root@db02-52 /data/app]# ln -s mysql-5.6.46-linux-glibc2.12-x86_64 mysql-56
[root@db02-52 /data/app]# chown -R mysql.mysql /data/
5.初始化数据目录:
[root@db02-52 /data/app]# /data/app/mysql-56/scripts/mysql_install_db --user=mysql --basedir=/data/app/mysql-56 --datadir=/data/local/data
#初始化数据库之前,一定要保证数据目录/data/local/data目录下无任何数据
6.编辑启动配置文件my.cnf
cat > /etc/my.cnf <
[mysqld]
user=mysql
basedir=/data/app/mysql-56
datadir=/data/local/data
socket=/tmp/mysql.sock
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
7.启动数据库
[root@db02-52 /data/app]# /data/app/mysql-56/bin/mysqld &
8.检查服务是否启动
[root@db02-52 /data/app]# netstat -tunlp
tcp6 0 0 :::3306 :::* LISTEN 6977/mysqld
#3306端口起来后登陆测试
[root@db02-52 /data/app]# /data/app/mysql-56/bin/mysql
#能够登陆到mysql则表示安装完成
4.5.6升级数据库到5.7最新版本
mysql-5.6.46已经是最新,所以不用升级5.6最新,直接升级到5.7最新
1.解压mysq-5.7.28到/data/app/目录下
[root@db02-52 /data/app]# tar -xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
2.创建软连接,修改/data目录属性
[root@db02-52 /data/app]# ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql-57
[root@db02-52 /data/app]# chown -R mysql.mysql /data/
3.修改/etc/my.cnf配置文件,让数据库快速关闭
cat > /etc/my.cnf <
[mysqld]
user=mysql
basedir=/data/app/mysql-56
datadir=/data/local/data
socket=/tmp/mysql.sock
innodb_fast_shutdown=0
#快速停止数据库主要参数
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
4.停止mysql-5.6数据库
[root@db02-52 /data/app]# /data/app/mysql-56/bin/mysqladmin shutdown
5.备份5.6数据库数据目录
[root@db02-52 /data/app]# cp -a /data/local/data /data/local/data-56.bak
6.编辑5.7数据库启动配置文件,修改权限
cat > /data/local/my.cnf <
[mysqld]
user=mysql
basedir=/data/app/mysql-57
datadir=/data/local/data
socket=/tmp/mysql.sock
innodb_fast_shutdown=0
port=3306
[mysql]
socket=/tmp/mysql.57.sock
EOF
[root@db02-52 /data/app]# chown mysql.mysql /data/local/my.cnf
7.用5.7数据库调用5.6数据目录文件启动
[root@db02-52 /data/app]# /data/app/mysql-57/bin/mysqld_safe --defaults-file=/data/local/my.cnf --skip-grant-tables --skip-networking &
8.升级5.6数据库数据为5.7版本兼容
[root@db02-52 /data/app]# /data/app/mysql-57/bin/mysql_upgrade --force
#全部OK则表示成功
9.重启数据库到正常状态
[root@db02-52 /data/app]# /data/app/mysql-57/bin/mysql -e "shutdown;"
#关闭数据库
[root@db02-52 /data/app]# /data/app/mysql-57/bin/mysqld_safe --defaults-file=/data/local/my.cnf &
#启动
10.查看是否升级完成
[root@db02-52 /data/app]# /data/app/mysql-57/bin/mysql -e "show databases;"
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
#sys库存在则表示升级完成,mysql-5.6没有sys库
5.5.7最新版本升级至8.0版
1.解压8.0数据库
[root@db02-52 /data/app]# tar -xf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
2.创建软连接,修改授权
[root@db02-52 /data/app]# ln -s mysql-8.0.18-linux-glibc2.12-x86_64 mysql-80
[root@db02-52 /data/app]# chown -R mysql.mysql /data
3.停止5.6数据库
[root@db02-52 /data/app]# /data/app/mysql-57/bin/mysql -e "shutdown;"
4.备份5.7数据库数据目录
[root@db02-52 /data/app]# cp -r /data/local/data /data/local/data-57.bak
5.编辑8.0数据库启动配置文件
cat >/etc/my.cnf <
[mysqld]
user=mysql
basedir=/data/app/mysql-80
datadir=/data/local/data
socket=/tmp/mysql.sock
innodb_fast_shutdown=0
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
6.用8.0数据库启动5.7数据库数据
[root@db02-52 /data/app]# /data/app/mysql-80/bin/mysqld &
7.测试数据库是否能正常登录
[root@db02-52 /data/app]# /data/app/mysql-80/bin/mysql
或者
[root@db02-52 /data/app]# /data/app/mysql-57/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.18 MySQL Community Server - GPL
#此时不管用5.7登录还是8.0登录,显示都是8.0版本.则升级完成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。