InnoDB:错误:空间标题页由数据文件./ibdata1中的零字节组成

时间:2014-10-26 19:03:11

标签: database wordpress centos mariadb centos7

我有一个非常好的wordpress设置,但今天服务器突然停止加载我的网站。我登录并重新启动了我的centos 7 VPS。重新启动后,它没有启动MariaDB。 这是我在日志中找到的内容:

141026 18:13:50 [Note] /usr/libexec/mysqld: Shutdown complete

141026 18:13:50 mysqld_safe mysqld from pid file /var/run/mariadb/mariadb.pid ended
141026 18:14:58 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
141026 18:14:58 InnoDB: The InnoDB memory heap is disabled
141026 18:14:58 InnoDB: Mutexes and rw_locks use GCC atomic builtins
141026 18:14:58 InnoDB: Compressed tables use zlib 1.2.7
141026 18:14:58 InnoDB: Using Linux native AIO
141026 18:14:58 InnoDB: Initializing buffer pool, size = 128.0M
141026 18:14:58 InnoDB: Completed initialization of buffer pool
InnoDB: Error: space header page consists of zero bytes in data file ./ibdata1
141026 18:14:58 InnoDB: Could not open or create data files.
141026 18:14:58 InnoDB: If you tried to add new data files, and it failed here,
141026 18:14:58 InnoDB: you should now edit innodb_data_file_path in my.cnf back
141026 18:14:58 InnoDB: to what it was, and remove the new ibdata files InnoDB created
141026 18:14:58 InnoDB: in this failed attempt. InnoDB only wrote those files full of
141026 18:14:58 InnoDB: zeros, but did not yet use them in any way. But be careful: do not
141026 18:14:58 InnoDB: remove old data files which contain your precious data!
141026 18:14:58 [ERROR] Plugin 'InnoDB' init function returned error.
141026 18:14:58 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
141026 18:14:58 [Note] Plugin 'FEEDBACK' is disabled.
141026 18:14:58 [ERROR] Unknown/unsupported storage engine: InnoDB
141026 18:14:58 [ERROR] Aborting

有人可以帮我调查可能出现的问题吗? 现在有可能备份我的数据库而无法启动MariaDB吗?

2 个答案:

答案 0 :(得分:10)

修改:将my-innodb-heavy-4G.cnf复制到/etc/my.cnf.d,服务器启动正常。可能是由于更改了binlog大小造成的。


听起来你改变了InnoDB缓冲区的大小,或者它已经损坏了。这些更改可能是在前一段时间内完成的,只是在重新启动时生效。

首先在/var/lib/mysql中备份您的数据 - 最好是整个目录。

  

cp -R / var / lib / mysql / var / lib / mysql-backup

备份数据后,最好的第一步是还原对/etc/my.cnf文件所做的任何更改并重新启动。

如果没有这样做,或者您不知道缓冲区的大小,下一个可能的选择是删除InnoDB binlog文件并让MariaDB / MySQL重新创建它们。这些文件名为/var/lib/mysql/ib_logfile{N},其中{N}是一个数字。

  

rm -rf / var / lib / mysql / ib_logfile *

如果这不能解决问题,请尝试将以下内容添加到/etc/my.cnf(或您使用的任何配置文件中,当然先备份)。它应该放在[innodb]部分。

innodb_buffer_pool_size        = 256M
innodb_log_file_size           = 256M
innodb_thread_concurrency      = 16
innodb_flush_log_at_trx_commit = 2
innodb_flush_method            = normal

诀窍是了解MariaDB的期望。如果您没有成功完成上述操作,请尝试最后一行并设置[innodb_flush_method]

答案 1 :(得分:3)

如果您在最初安装MySQL时遇到此问题,只需删除MySQL数据目录中的ibdataib_logfile*文件,然后再次启动MySQL。

祝你好运!