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

源数据版本:5.7.31
新版本:8.0.21
升级流程:
一、源环境数据导出SQL
二、关闭数据库
三、安装新8.0 rpm包
四、初始化目录
五、启动数据库
六、导入数据
七、upgrade数据 ****很是重要**mysql

因为mysql5.7 mysql中系统表默认引擎为MyISAM,升级后建立用户报错sql

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

主要缘由没有执行第7步骤。
#############逻辑升级流程###############
一、导出现有数据:数据库

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

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

mysqladmin -u root -p shutdown

3、安装8.0 RPM架构

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

4、初始化目录ide

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

5、启动8.0性能

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

6、导入数据code

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

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

7、执行任何剩余的升级操做:事务

在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;

相关文章
相关标签/搜索