PIYO - Tech & Life -

MySQLのデータベース接続確立エラー

Azure AWS MySQL

AWSのt1.microとかWindowsAzureの仮想マシンとかでWordPressを動かしているとき、割と頻繁に「データベース接続確立エラー」というエラーを見かけることがあった。

ログを見るとなんらかの理由で再起動がかかったあとで起動に失敗しているようだ。

140627 00:52:45 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140627  0:52:45 [Note] Plugin 'FEDERATED' is disabled.
140627  0:52:45 InnoDB: The InnoDB memory heap is disabled
140627  0:52:45 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140627  0:52:45 InnoDB: Compressed tables use zlib 1.2.3
140627  0:52:45 InnoDB: Using Linux native AIO
140627  0:52:45 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
140627  0:52:45 InnoDB: Completed initialization of buffer pool
140627  0:52:45 InnoDB: Fatal error: cannot allocate memory for the buffer pool
140627  0:52:45 [ERROR] Plugin 'InnoDB' init function returned error.
140627  0:52:45 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140627  0:52:45 [ERROR] Failed to initialize plugins.
140627  0:52:45 [ERROR] Aborting

メモリの問題のように見えるのでfreeコマンドでメモリを調べてみたところ、スワップ領域がゼロになっていた。このあたりのリンクを参考にスワップ領域を割り当てると、mysqldは問題なく起動してくれた。