CentOs 6.9 Mysqld无法启动(InnoDB错误:innodb_system数据文件'./ibdata1'的大小不同)

时间:2018-03-16 17:41:40

标签: mysql linux centos vps

升级到php 5.5(我知道它老了)并更新了我的phpMyAdmin版本,以及MySQL到5.7,现在MySQL不会启动......

查看mysqld日志: 2018-03-16T16:35:54.553247Z 0 [ERROR] InnoDB: The Auto-extending innodb_system 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! 2018-03-16T16:35:54.553310Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error 2018-03-16T16:35:55.153859Z 0 [ERROR] Plugin 'InnoDB' init function returned error. 2018-03-16T16:35:55.153924Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 2018-03-16T16:35:55.153944Z 0 [ERROR] Failed to initialize builtin plugins. 2018-03-16T16:35:55.153964Z 0 [ERROR] Aborting

有人可以告诉我为什么会发生这种情况。

2 个答案:

答案 0 :(得分:1)

配置文件/etc/my.cnf包含一个innodb_xxxx,它引用一个大小为768页的自动扩展。这可以包括像

这样的参数

innodb_data_home_dir

innodb_data_file_path中

完整语法描述此值

file_name:file_size[:autoextend[:max:max_file_size]]

实施例

innodb_data_file_path=/var/lib/mysql/ibdata1:768M:autoextend

如果您可以访问以前工作的MySQL(就像您朋友的另一台服务器一样),请登录mysql客户端并输入以下内容以查看正在运行的配置

> SELECT @@GLOBAL.innodb_data_file_path;

+--------------------------------+
| @@GLOBAL.innodb_data_file_path |
+--------------------------------+
| ibdata1:10M:autoextend         |
+--------------------------------+

为什么会这样?

您的innodb存储文件小于my.cnf配置中指定的初始大小。

希望这澄清事项。

答案 1 :(得分:0)

我遵循了您的建议并提出了解决方案,大约用bash行2行,您就可以了。启动某些mysql / mariadb服务器或docker映像时,我看到以下消息:

  

自动扩展的innodb_system数据文件'./ibdata1'具有   与.cnf文件中指定的0页大小不同:初始768   页,最多0页(如果非零则相关)!

然后检测到先前的安装,并且数据文件空间不兼容。一个简单直接的解决方案是删除可能备份在主机上的现有容器映像。快速启动Docker rmi命令已准备就绪,可以执行干净但不可逆的操作,您应该知道Docker映像的名称是什么,例如mariadb:

docker rmi `docker images | grep mariadb | awk '{print $3}'`

重试运行新的mysql映像:

docker run -it mypersonalrepo/mariadb:latest &

将使用InnoDB 768M空间数据初始化数据库。