数据库版本升级方法:
第一种方法:本地升级(数据库服务5.6-5.7-8.0) 停库
第二种方法:迁移升级(数据库服务数据迁移到另一台新的数据库服务中)
旧版数据库服务地址 10.0.0.51 网络停止
新版数据库服务地址 10.0.0.51 8.0 读取旧版中的数据
数据库版本升级注意事项:
· 数据库升级,需要在GA版本之间进行升级,不支持数据库测试版升级
· 数据库升级时,建议将旧版本数据库升级到小版本的最新版
· 数据库升级时,不支持跨版本升级 5.6 -- 5.7 -- 8.0
· 数据库升级时,小版本之间升级,只支持GA版本
https://dev.mysql.com/doc/refman/8.0/en/upgrade-paths.html
PS:在升级数据库版本时,需要编写升级项目方案(简历)
数据库升级过程:
5.6 --- 5.7
第一个历程:准备好测试数据
create database game;
create table user(id int,name varchar(10),gender char(5));
insert into user values(01,'zhangsan','m');
insert into user values(02,'lisi','f');
insert into user values(03,'wangwu','m');
grant all on *.* to oldboy@'%' identified by '123456';
第二个历程:将旧版数据库数据进行备份
tar zcvf 3356_backup.tar.gz ./3356/
第三个历程:安装新版本数据库服务
省略...
第四个历程:实现挂库升级
停止旧版数据库服务
[root@xiaoQ-01 local]# vim /data/3356/my.cnf
innodb_fast_shutdown=0
-- 企业实战环境,需要添加此配置参数信息在配置文件中,实现优雅关闭数据库服务
vim /data/3356/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql57
datadir=/data/3356/data
socket=/tmp/mysql3356.sock
port=3356
innodb_fast_shutdown=0
/usr/local/mysql57/bin/mysqld_safe --defaults-file=/data/3356/my.cnf --skip-grant-tables --skip-networking &
/usr/local/mysql57/bin/mysql_upgrade -S /tmp/mysql3356.sock --force
第五个历程:重新启动数据库服务
vim /etc/systemd/system/mysqld3357.service
ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/data/3356/my.cnf
pkill mysql
systemctl start mysqld3357
mysql -uroot -S /tmp/mysql3356.sock
5.7 - 8.0
不同点:不需要执行升级命令
/usr/local/mysql57/bin/mysql_upgrade -S /tmp/mysql3356.sock --force
第四个历程:实现挂库升级
[root@xiaoQ-01 local]# vim /data/3357/my.cnf
innodb_fast_shutdown=0
-- 企业实战环境,需要添加此配置参数信息在配置文件中,实现优雅关闭数据库服务
或者
> set global innodb_fast_shutdown=0
> select @@innodb_fast_shutdown
-- 连接进入旧版本数据库中,直接设置数据库服务功能参数信息,使之立即生效
[root@xiaoQ-01 local]# systemctl stop mysqld3357
-- 配置文件加入以上参数后,此时关闭数据库服务,会采用优雅关闭服务,而不是采用快速关闭数据库服务方式
vim /data/3356/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3356/data
socket=/tmp/mysql3356.sock
port=3356
innodb_fast_shutdown=0
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3356/my.cnf --skip-grant-tables --skip-networking &
pkill mysql
第五个历程:重新启动数据库服务
vim /etc/systemd/system/mysqld3380.service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3356/my.cnf
systemctl daemon-reload
systemctl start mysqld3380
数据库8.0新的功能介绍:检查数据库升级环境
第一个历程:安装mysql-shell工具
https://downloads.mysql.com/archives/shell/
tar xf mysql-shell-8.0.26-linux-glibc2.12-x86-64bit.tar.gz
ln -s mysql-shell-8.0.26-linux-glibc2.12-x86-64bit mysqlsh
/usr/local/mysqlsh/bin
-rwxr-xr-x 1 7161 31415 33241904 Jun 11 2021 mysqlsh
mysql -uroot -S /tmp/mysql3357.sock
grant all on *.* to root@'%' identified by '123456';
-- 创建一个连接旧版数据库服务用户
./bin/mysqlsh root:123456@10.0.0.51:3357 -e "util.checkForServerUpgrade()"
PS:主要关注命令执行后的errors信息即可,没有errors报错表示可以进行升级操作