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;

相關文章
相關標籤/搜索