ec2マイクロインスタンスmysqlデータベースの競合を防ぐ方法は?

ec2マイクロインスタンスmysqlデータベースの競合を防ぐ方法は?

WordPress Webサイトを含むAmazon ec2マイクロインスタンスがあります。昨日からmysqlデータベースがクラッシュしました。

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo service mysqld status
mysqld dead but subsys locked

mysqldを再起動してみましたが、5分ごとに同じメッセージでクラッシュし続けます - 「データベース接続設定エラー」

これは私のデータベースログファイルが読む内容です。

160123 05:44:41 mysqld_safe mysqld restarted
160123  5:44:43 [Note] /usr/libexec/mysql55/mysqld (mysqld 5.5.46) starting as process 7928 ...
160123  5:44:44 [Note] Plugin 'FEDERATED' is disabled.
160123  5:44:46 InnoDB: The InnoDB memory heap is disabled
160123  5:44:46 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160123  5:44:46 InnoDB: Compressed tables use zlib 1.2.8
160123  5:44:46 InnoDB: Using Linux native AIO
160123  5:44:46 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
160123  5:44:46 InnoDB: Completed initialization of buffer pool
160123  5:44:46 InnoDB: Fatal error: cannot allocate memory for the buffer pool
160123  5:44:46 [ERROR] Plugin 'InnoDB' init function returned error.
160123  5:44:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160123  5:44:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160123  5:44:46 [ERROR] Aborting    
160123  5:44:46 [Note] /usr/libexec/mysql55/mysqld: Shutdown complete
160123 05:44:46 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

この問題に対する解決策をGoogleで検索したときに私が見つけた一般的な解決策は、スワップmysqld dead but subsys lockedファイルを作成することでした。私はほとんどのソリューションが提案したように正確に行いましたが、UNIXに慣れていないので、私がやっていることが正しいかどうかわかりません。

Wunterが要求したように、私の質問を結果に更新してくださいfree。 1MBのスワップスペースがあります。

[ec2-user@ip-xx-xx-xx-xxx /]$ free
             total       used       free     shared    buffers     cached
Mem:       1019452     613820     405632         76      19124      64348
-/+ buffers/cache:     530348     489104
Swap:      1048572      46604    1001968

ここに画像の説明を入力してください。

それともこの問題に対する他の解決策はありますか?助けてください。

ベストアンサー1

明確にするために、メッセージmysqld dead but subsys lockedは次のとおりです。兆候、一つでもない理由。つまり、mysqldがクラッシュし(「死」)、initシステムの状態データベースに古い情報がある(「しかしsubsysがロックされている」)ことを意味します。それはあなたに言わないでしょうなぜ状況が崩れました。

問題は mysql サーバーログで説明されています。

160123  5:44:46 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
160123  5:44:46 InnoDB: Completed initialization of buffer pool
160123  5:44:46 InnoDB: Fatal error: cannot allocate memory for the buffer pool
160123  5:44:46 [ERROR] Plugin 'InnoDB' init function returned error.
160123  5:44:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160123  5:44:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160123  5:44:46 [ERROR] Aborting    

mmap()これは、InnoDB(ストレージエンジン)が初期化しようとしたときにその領域に128 M RAMを割り当てようとしましたが失敗したことを意味します。

スワップスペースを追加したと記載されています。エラーメッセージを考えると、これは正しい解決策であるに違いありませんが、おそらく十分なスワップスペースを追加していないため、うまくいかないようです。

スワップスペースのサイズを増やしてください。それでも問題が解決しない場合は、を実行してfree質問を更新して、そのコマンドの出力を公開してください。

おすすめ記事