MySQL 8.0 找不到数据字典版本号
Posted
技术标签:
【中文标题】MySQL 8.0 找不到数据字典版本号【英文标题】:MySQL 8.0 No data dictionary version number found 【发布时间】:2018-07-03 01:13:33 【问题描述】:我已在我的测试服务器上将 mysql 8.0.3 更新为 8.0.4。但是,它不会启动服务。
LOG的附加信息:
2018-01-24T04:32:26.996977Z 0 [System] [MY-010116] /usr/sbin/mysqld (mysqld 8.0.4-rc-log) starting as process 12406 ...
2018-01-24T04:32:27.444234Z 1 [ERROR] [MY-011096] No data dictionary version number found.
2018-01-24T04:32:27.444725Z 0 [ERROR] [MY-010020] Data Dictionary initialization failed.
2018-01-24T04:32:27.444802Z 0 [ERROR] [MY-010119] Aborting
2018-01-24T04:32:28.806928Z 0 [System] [MY-010910] /usr/sbin/mysqld: Shutdown complete.
我也尝试运行 mysqld_safe,它会抛出以下内容:
2018-01-24T04: 25: 33.852181Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2018-01-24T04: 25: 33.857404Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file do not exists.
该目录不存在,所以我继续创建它:
sudo mkdir -p /var/run/mysqld
sudo chown mysql: mysql /var/run/mysqld
sudo mysqld_safe
他向控制台抛出以下内容:
2018-01-24T04: 27: 29.816902Z mysqld_safe 记录到“/var/log/mysql/error.log”。 2018-01-24T04: 27: 29.870025Z mysqld_safe 使用来自 /var/lib/mysql 的数据库启动 mysqld 守护进程 nohup/usr/sbin/mysqld--basedir=/usr--datadir=/var/lib/mysql--plugin-dir=/usr/lib/mysql/plugin--user=mysql--log-error=/var /log/mysql/error.log --pid-file = /var/run/mysqld/mysqld.pid --socket = /var/run/mysqld/mysqld.sock --port = 3309
我再次启动服务并扔给我:
Job for mysql.service failed because of the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
我搜索日志并出现以下内容:
2018-01-24T04: 30: 11.601843Z 0 [System] [MY-010116] /usr/sbin/mysqld (mysqld 8.0.4-rc-log) starting as process 9140 ...
2018-01-24T04: 30: 12.001705Z 1 [ERROR] [MY-011096] No data dictionary version number found.
2018-01-24T04: 30: 12.002121Z 0 [ERROR] [MY-010020] Data Dictionary initialization failed.
2018-01-24T04: 30: 12.002232Z 0 [ERROR] [MY-010119] Aborting
我可以做些什么来启动服务?我已经查看了 /var/lib/ mysql 目录并且有数据库。
【问题讨论】:
遇到了同样的问题:bugs.mysql.com/bug.php?id=89372。请注意,不支持升级(请参阅 8.0.4 的发行说明) 感谢您指出错误。那么从我看到的情况来看,这个问题是没有办法解决的。 显然不是。我确实尝试了一些技巧,但我现在继续使用新的 8.0.4。 同样的问题兄弟,我要回到 5.7.x :( 等待稳定的 v8 【参考方案1】:降级到 8.0.3 没有用,因为 mysqld 拒绝启动:
2018-02-22T02:41:16.614370Z 1 [ERROR] InnoDB: Unsupported redo log format. The redo log was created with MySQL 8.0.4. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading-downgrading.html
2018-02-22T02:41:16.614425Z 1 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2018-02-22T02:41:17.215253Z 1 [ERROR] Failed to initialize DD Storage Engine
2018-02-22T02:41:17.216179Z 0 [ERROR] Data Dictionary initialization failed.
2018-02-22T02:41:17.216216Z 0 [ERROR] Aborting
我首先备份了/var/lib/mysql
数据目录(以防后续步骤破坏任何内容),然后在/etc/mysql/my.cnf
的[mysqld]
部分设置innodb_force_recovery = 6
,从而设法取回我的数据(请参阅docs),启动 mysqld,然后使用mysqldump
进行备份。之后我建立了一个新的 mysql 服务器并在那里导入了转储。
【讨论】:
以上是关于MySQL 8.0 找不到数据字典版本号的主要内容,如果未能解决你的问题,请参考以下文章