set global innodb_fast_shutdown = 0
2.备份
mysqldump -uroot -p --add-drop-table --routines --events --all-databases --force >mysql8.sql
3.关闭服务
systemctl stop mysqld && systemctl status mysqld
4.删除REDO日志文件(ib_logfile),避免不同版本之间发生与重做日志文件格式相关的问题
rm -rf /var/lib/mysql/ib_logfile*
5.卸载旧版本
rpm -qa | grep -i 'mysql-*'|xargs rpm -e --nodeps
6.配置5.7yum源
在/etc/yum.repos.d/下生成新的repo,如下:
[mysql5-community]
name=Mysql 5.7
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
其中, $basearch变量代表的是CPU架构
7.更新缓存,并下载
yum makecache && yum repolist #更新缓存并查看可用版本
yum install -y mysql-community-server
#有报错,密钥不对重新导入即可
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
8.启动服务,并修改密码
systemctl start mysqld #有报错,原因是卸载mysql8之后,数据目录没有清干净,原来的重新备份,新建目录或者在配置文件中设置数据目录访问路径
grep -i 'temporary password' /var/log/mysqld.log
#获取临时密码
alter user 'root'@'localhost' identified by '新密码';
flush privileges;
\q
注:mysql首次使用临时密码后由于安全策略限制,必须先修改密码,其中mysql5.7直接修改; mysql8有区别,需要先重置在进行修改,如; alter user 'root'@'localhost' identified with mysql_native_password by '旧密码'; alter user 'root'@'localhost' identified by '新密码';
9.恢复备份,并upgrade
mysql -uroot -p < mysql8.sql mysql_upgrade -uroot -p
systemctl restart mysqld
注:mysql8与5.7的sql脚本是由部分不兼容的,如校队方式('utf8mb4_0900_ai_ci' --> 'utf8mb4_general_ci'),mysql8中system tables支持innodb,但是5.7默认为MyISAM引擎
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。