AWSのmicroインスタンスでmysqlが落ちるときの対応

awsのt2.microインスタンスでWordPressを構築していますがMySQLが時々落ちるため対応いれました。

まずはログ確認

大抵はログに何かしら情報が出てるはずなので確認する

tail -n 50 /var/log/mysqld.log

[Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
[ERROR] InnoDB: mmap(137428992 bytes) failed; errno 12
[ERROR] InnoDB: Cannot allocate memory for the buffer pool
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Failed to initialize builtin plugins.
[ERROR] Aborting

mysqlのメモリが足りてない。
awsの特定のインスタンスにはswap領域が含まれていない。
対策は2点。

swap領域を作る

とりあえず1Gほど作ります。

# swap専用のディレクトリ
sudo mkdir /var/lib/swap
cd /var/lib/swap

# swapfileを作ってrootのみの権限変更(ちょっと時間がかかる)
dd if=/dev/zero of=swapfile count=1024 bs=1M
sudo chmod 600 swapfile

# swap領域を作成して、有効にする
sudo mkswap swapfile
sudo swapon swapfile
# 最後にfreeでswapが作られているか確認

$ free
              total        used        free      shared  buff/cache   available
Mem:        1014580      695788      104092      105864      214700       74888
Swap:       1048572       94768      953804

mysqlのメモリを増やす

# 設定ファイルを書き換える
vim /etc/my.conf

# 追記
innodb_buffer_pool_size=256M
# MySQLを再起動して確認する
sudo service mysqld restart
SHOW VARIABLES LIKE 'innodb_buffer_pool_size'

まとめ

とりあえずログ確認する。swap領域作る。メモリ使用量増やす。以上

困ったときのワードやエラー文そのまま検索すると、対応した記事が出てくるのでありがたい。