源数据版本: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;