您的位置:首页 > 数据库 > MySQL

mysql 5.7升级8.0 ERROR 1726 (HY000): Storage engine

2020-08-12 00:25 1736 查看

源数据版本:5.7.31
新版本:8.0.21
升级流程:
1、源环境数据导出SQL
2、关闭数据库
3、安装新8.0 rpm包
4、初始化目录
5、启动数据库
6、导入数据
7、upgrade数据 ****非常重要**

由于mysql5.7 mysql中系统表默认引擎为MyISAM,升级后创建用户报错

mysql> create user 'leo'@'%' identified by 'leo';
ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables. [mysql.user]

主要原因没有执行第7步骤。
#############逻辑升级流程###############
1、导出现有数据:

mysqldump -u root -p --all-databases > data-for-upgrade.sql

二、关闭旧的MySQL服务器。 例如:

mysqladmin -u root -p shutdown

三、安装8.0 RPM

yum install -y  mysql-community-{server,client,common,libs}-*

四、初始化目录

/usr/sbin/mysqld --initialize --datadir=/path/to/8.0-datadir  /*数据文件目录

五、启动8.0

mysqld_safe --user = mysql --datadir = /path/to/8.0-datadir&

六、导入数据

mysql -u root -p --force <data-for-upgrade.sql

注意
gtid_mode=ON 如果转储文件包含系统表, 则不建议在服务器( ) 上启用GTID时加载转储文件 。 mysqldump 为使用非事务性MyISAM存储引擎的系统表发出DML指令,并且在启用GTID时不允许这种组合。 另请注意,将启用了GTID的服务器中的转储文件加载到启用了GTID的其他服务器中会导致生成不同的事务标识符。

七、执行任何剩余的升级操作:

在MySQL 8.0.16及更高版本中,关闭服务器,然后使用 --upgrade=FORCE 选项 重新启动它 以执行剩余的升级任务:

mysqladmin -u root -p shutdown
mysqld_safe --user = mysql --datadir = /path/to/8.0-datadir--upgrade = FORCE&
重启后 --upgrade=FORCE ,服务器会 mysql 在MySQL 5.7和MySQL 8.0之间 进行 系统架构中 所需的任何更改 ,以便您可以利用新的权限或功能。 它还 为MySQL 8.0提供了最新 的性能模式 INFORMATION_SCHEMA 和 sys 模式,并检查了与当前版本的MySQL不兼容的所有用户模式。

在MySQL 8.0.16之前,执行 mysql_upgrade 以执行剩余的升级任务:

mysql_upgrade -u root -p
然后关闭并重新启动MySQL服务器,以确保对系统表所做的任何更改都生效。 例如:

mysqladmin -u root -p shutdown
mysqld_safe --user = mysql --datadir = /path/to/8.0-datadir&
注意
升级过程不会升级时区表的内容。 有关升级说明,请参见 第5.1.13节“MySQL服务器时区支持” 。

如果升级过程使用 mysql_upgrade (即,在MySQL 8.0.16之前),则该过程也不会升级帮助表的内容。 有关该情况下的升级说明,请参见 第5.1.14节“服务器端帮助支持” 。

注意
加载包含MySQL 5.7 mysql 架构 的转储文件会 重新创建两个不再使用的表: event 和 proc 。 (相应的MySQL 8.0表是 events 和 routines ,它们都是数据字典表并受到保护。)在您对升级成功感到满意后,可以 通过执行以下SQL语句 来删除 event 和 proc 表:

DROP TABLE mysql.event;
DROP TABLE mysql.proc;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐