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

r1zhe5dt  于 2022-11-07  发布在  Mysql
关注(0)|答案(3)|浏览(204)

升级到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
有人能让我知道为什么会发生这种情况吗?

ttcibm8c

ttcibm8c1#

配置文件/etc/my.cnf包含一个innodb_xxxx,它引用了一个大小为768页的自动扩展。
innodb_数据_主目录
innodb_数据_文件_路径
完整的语法描述了此值

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配置中指定的初始大小。
希望这件事情说清楚。

gt0wga4j

gt0wga4j2#

对于未来的用户,这是我的经验:
我遇到了同样的错误,问题是我的本地卷不存在。

version: "3.7"

services:
  mysql-db:
    image: mariadb:10.8
    container_name: mysql-db
    restart: unless-stopped
    tty: true
    ports:
      - "4407:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 12345678
    volumes:
      - ./db:/var/lib/mysql/

文件夹./db不存在。
在当前路径中创建文件夹后,它可以正常工作。

xfb7svmp

xfb7svmp3#

我遵循了你的建议,并制定了一个解决方案,这是大约2行在bash,你在那里.我看到以下消息后,启动一些mysql/mariadb服务器或docker图像:
自动扩展innodb_system数据文件“./ibdata 1”的大小0页与.cnf文件中指定的大小不同:初始768页,最多0页(如果非零,则相关)!
然后检测到以前的安装,并且数据文件空间不兼容。一个简单直接的解决方案是删除可能在主机上备份的现有容器映像。快速启动Docker rmi命令已准备好完成一个干净但不可逆的操作,您应该知道您的Docker映像的名称,例如mariadb:

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

重试运行新的mysql映像:

docker run -it mypersonalrepo/mariadb:latest &

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

相关问题