MySQL 从 v5.1 升级到 v8 失败。* -- 如何恢复数据

MySQL FAIL on upgrade from v5.1 to v8.* -- How to recover data

我目前是 运行 Redhat 服务器:

Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.10 (Santiago)
Release:        6.10
Codename:       Santiago

并且之前安装了 MySQL 5.1 版。我需要将 MySQL 升级到版本 > 5.6,所以首先我导出了所有数据库:mysqldump [options] > dump.sql。我下载了 rpm:mysql80-community-release-el6-2.noarch.rpm 和 运行:

sudo rpm -Uvh mysql80-community-release-el6-2.noarch.rpm 
sudo yum -y update mysql*
rpm -qa | grep mysql
mysql-community-libs-8.0.15-1.el6.x86_64
mysql80-community-release-el6-2.noarch
mysql-community-server-8.0.15-1.el6.x86_64
mysql-community-common-8.0.15-1.el6.x86_64
mysql-community-libs-compat-8.0.15-1.el6.x86_64
mysql-community-client-8.0.15-1.el6.x86_64

现在当我尝试启动 mysql 时出现了问题:sudo service mysqld start 显然,它不会启动,这是日志:

2019-04-23T22:04:09.953724Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 16303
2019-04-23T22:04:10.072176Z 1 [ERROR] [MY-013090] [InnoDB] Unsupported redo log format (0). The redo log was created before MySQL 5.7.9
2019-04-23T22:04:10.072217Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
2019-04-23T22:04:10.672999Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
2019-04-23T22:04:10.673398Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2019-04-23T22:04:10.673567Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-04-23T22:04:10.674496Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15)  MySQL Community Server - GPL.
2019-04-23T22:07:57.788396Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2019-04-23T22:07:57.788446Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2019-04-23T22:07:57.790578Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 16750
2019-04-23T22:07:59.289318Z 1 [ERROR] [MY-013168] [InnoDB] Cannot upgrade server earlier than 5.7 to 8.0
2019-04-23T22:08:04.399358Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
2019-04-23T22:08:04.399712Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2019-04-23T22:08:04.400111Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-04-23T22:08:04.401574Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15)  MySQL Community Server - GPL.
2019-04-23T22:23:36.368160Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2019-04-23T22:23:36.368200Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2019-04-23T22:23:36.370634Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 17915
2019-04-23T22:23:36.772757Z 1 [ERROR] [MY-013168] [InnoDB] Cannot upgrade server earlier than 5.7 to 8.0
2019-04-23T22:23:41.882681Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
2019-04-23T22:23:41.883054Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2019-04-23T22:23:41.883362Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-04-23T22:23:41.884282Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15)  MySQL Community Server - GPL.
2019-04-23T23:01:40.642684Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2019-04-23T23:01:40.642724Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2019-04-23T23:01:40.646798Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 20087
2019-04-23T23:01:41.612258Z 1 [ERROR] [MY-013168] [InnoDB] Cannot upgrade server earlier than 5.7 to 8.0
2019-04-23T23:01:46.720034Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
2019-04-23T23:01:46.720414Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2019-04-23T23:01:46.720645Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-04-23T23:01:46.721479Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15)  MySQL Community Server - GPL.
2019-04-23T23:38:32.052191Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2019-04-23T23:38:32.052242Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2019-04-23T23:38:32.056515Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 22326
2019-04-23T23:38:32.619209Z 1 [ERROR] [MY-013168] [InnoDB] Cannot upgrade server earlier than 5.7 to 8.0
2019-04-23T23:38:37.728572Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
2019-04-23T23:38:37.729004Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2019-04-23T23:38:37.729451Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-04-23T23:38:37.730880Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15)  MySQL Community Server - GPL.

2019-04-23T23:38:32.619209Z 1 [错误] [MY-013168] [InnoDB] 无法将早于 5.7 的服务器升级到 8.0

需要执行哪些步骤才能正确升级MySQL,同时保留数据库中的数据?现在,我只备份了架构。 全新安装将是最后的手段,那么在我目前的状态下是否可以恢复数据库数据并正确执行升级?

编辑

我卸载了 MySQL8.0 并安装了 V 5.6,但在开始时我在日志中收到此错误 - 我不确定从这里开始做什么:

2019-04-24 10:41:07 14335 [Note] Plugin 'FEDERATED' is disabled.
2019-04-24 10:41:07 14335 [Note] InnoDB: Using atomics to ref count buffer poolpages
2019-04-24 10:41:07 14335 [Note] InnoDB: The InnoDB memory heap is disabled
2019-04-24 10:41:07 14335 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2019-04-24 10:41:07 14335 [Note] InnoDB: Memory barrier is not used
2019-04-24 10:41:07 14335 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-04-24 10:41:07 14335 [Note] InnoDB: Using Linux native AIO
2019-04-24 10:41:07 14335 [Note] InnoDB: Using CPU crc32 instructions
2019-04-24 10:41:07 14335 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2019-04-24 10:41:07 14335 [Note] InnoDB: Completed initialization of buffer pool
2019-04-24 10:41:07 14335 [ERROR] InnoDB: auto-extending data file ./ibdata1 is of a different size 640 pages (rounded down to MB) than specified in the .cnf file: initial 768 pages, max 0 (relevant if non-zero) pages!
2019-04-24 10:41:07 14335 [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data!
2019-04-24 10:41:07 14335 [ERROR] Plugin 'InnoDB' init function returned error.
2019-04-24 10:41:07 14335 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-04-24 10:41:07 14335 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-04-24 10:41:07 14335 [ERROR] Aborting
2019-04-24 10:41:07 14335 [Note] Binlog end
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'partition'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWOR                                                                                                                                                            D'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_METRICS'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESE                                                                                                                                                             T'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_CMPMEM'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_CMP'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_LOCKS'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'INNODB_TRX'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'BLACKHOLE'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'ARCHIVE'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'MRG_MYISAM'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'MEMORY'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'CSV'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'MyISAM'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'sha256_password'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'mysql_old_password'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'mysql_native_password'
2019-04-24 10:41:07 14335 [Note] Shutting down plugin 'binlog'
2019-04-24 10:41:07 14335 [Note] /usr/sbin/mysqld: Shutdown complete

找到一个相关的 post 并开始使用它。参考:Solution

这个解决方案对我有用。

  1. 导航到 /var/lib/mysql
  2. 删除所有ib_logfile的
  3. 删除ibdata1文件
  4. 重启mysql服务器