【问题标题】:CentOs 6.9 Mysqld failed to start (InnoDB Error: innodb_system data file './ibdata1' is of a different size)CentOs 6.9 Mysqld 启动失败(InnoDB 错误:innodb_system 数据文件 './ibdata1' is of a different size)
【发布时间】:2018-08-25 20:51:22
【问题描述】:

升级到 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

谁能告诉我为什么会发生这种情况。

【问题讨论】:

    标签: mysql linux centos vps


    【解决方案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 配置中指定的初始大小。

    希望这能澄清问题。

    【讨论】:

      【解决方案2】:

      我听从了您的建议并制定了一个解决方案,这大约是 bash 中的 2 行代码,然后就可以了。在启动一些 mysql/mariadb 服务器或 docker 映像时,我看到了以下消息:

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

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

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

      重试运行新的mysql镜像:

      docker run -it mypersonalrepo/mariadb:latest &
      

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

      【讨论】:

        猜你喜欢
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-02
        相关资源
        最近更新 更多