注意,文中的目录路径请根据实际情况修改。
-
配置 mysql 慢速关闭
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
-
关闭 mysql 服务
mysqladmin -u root -p shutdown
-
备份数据文件
mkdir /work/data_bak && cp -r /work/data/* "$_"
-
备份原 mysql 应用文件
mv /work/{mysql,mysql_bak}
-
使用新版 mysql 替换原 mysql 应用文件
tar -xzvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
mv /work/{mysql-5.7.31-linux-glibc2.12-x86_64,mysql}
-
修改文件所有者
chown -R mysql:mysql /work/mysql
-
启动 mysql 服务
mysqld_safe --user=mysql
启动完成后可使用 mysql -V 获取连接数据库 执行 select @@version 查看当前数据库版本
-
运行mysql_upgrade
mysql_upgrade -u root -p
-
重启 mysql 服务
mysqladmin -u root -p shutdown
mysqld_safe --user=mysql
除了上述的方法,还可以通过逻辑升级的方式对mysql进行升级。逻辑升级就是导出数据,然后升级,最后再导入数据。安全性高,主要针对数据量不大的数据库,常用的工具:mysqldump和Xtrabackup。
扩展:innodb_fast_shutdown有3个取值:
- 设置为1:关闭MySQL的时候不会做清除脏页和插入缓冲区的合并操作,也不会将脏页刷新到磁盘
- 设置为0:会做清除脏页和插入缓冲区的合并操作,也会将脏页全部刷新到磁盘上面去,但是这个时候关闭的速度也是最慢的
- 设置为2:不会做清除脏页和插入缓冲区的合并操作,也不会将脏页刷新到磁盘,但是会刷新到redo log里面,再下次启动mysql的时候恢复