web-dev-qa-db-ja.com

InnoDB:エラー:スペースヘッダーページがデータファイル./ibdata1のゼロバイトで構成されています

完全に問題のない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を起動できずにデータベースをバックアップする可能性はありますか?

6
Peter

編集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]を設定してください。

10
doublesharp

MySQLを最初にインストールしたときにこの問題が発生した場合は、MySQLデータディレクトリのibdataファイルとib_logfile*ファイルを削除してから、MySQLを再起動してください。

幸運を!

4
robinwen