6

我有一个完美的 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 的情况下备份我的数据库?

4

2 回答 2

11

编辑:复制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 二进制日志文件并让 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]

于 2014-10-26T21:24:03.143 回答
7

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

祝你好运!

于 2015-10-07T03:54:45.197 回答