MySQLが「Fatal error: cannot allocate memory for the buffer pool」となり起動しない問題
開発環境のWordPressがいきなり「データベース接続確立エラー」となり、mysqlが起動しなくなってしまった時の対処法です。
原因:buffer poolのメモリ割当が少なかったせい
mysqlを起動すると以下のようにエラーに。
$ service mysqld start
MySQL Daemon failed to start.
Starting mysqld: [FAILED]
まずは、/var/log/mysqld.logを確認。すると以下のようなエラーがでていました。
151117 9:55:58 InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137363456 bytes) failed; errno 12 151117 9:55:58 InnoDB: Completed initialization of buffer pool 151117 9:55:58 InnoDB: Fatal error: cannot allocate memory for the buffer pool 151117 9:55:58 [ERROR] Plugin 'InnoDB' init function returned error. 151117 9:55:58 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 151117 9:55:58 [ERROR] Unknown/unsupported storage engine: InnoDB 151117 9:55:58 [ERROR] Aborting
原因となりそうなのはこの部分。
151117 9:55:58 InnoDB: Fatal error: cannot allocate memory for the buffer pool
対処法:my.cnfのinnodb_buffer_pool_sizeを増やす
メモリの割当ができなかったようなので、/etc/my.cnfを編集してメモリの割当を増やします。とりあえず、512Mにすることに。
innodb_buffer_pool_size = 512M
そこで、MySQLを再起動。
$ service mysqld start
Starting mysqld: [ OK ]
これでMySQLが再起動しました。
*注意* innodb_log_file_sizeは変更しない
ちなみにinnodb_log_file_sizeを合わせて変更しようとすると、MySQL 5.6未満だとエラーとなるようです。
特に理由がなければ、innodb_buffer_pool_sizeのメモリを増やすだけで良いかなと思います。