AmazonAWSで、MySQL がよく落ちる? そんな時はSWAP領域をチェック!

  • 21
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Amazon AWSにてt1microサービスを利用していますが、MySQLがよく落ちるんです。

それで、ログを確認したところ。。。

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

メモリを確認すると、Swapが0でした。。。

[root@ip-xxx ~]# free
             total       used       free     shared    buffers     cached
Mem:       1018504     949092      69412      31980      28740     695944
-/+ buffers/cache:     224408     794096
Swap:            0          0          0

要するに、AWSのt1microサービスだと、Swap領域が無かった訳です。
やることは、Swap領域を作成してあげれば、問題解決ですね。

まずは、ddコマンドで指定サイズの空のファイルを作成します。
とりあえず、サイズは1024MBで。

[root@ip-xxx ~]# dd if=/dev/zero of=/swapfile bs=1M count=1024

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 14.8488 s, 72.3 MB/s

mkswapで、スワップ領域を作成します。

[root@ip-xxx ~]# mkswap /swapfile
mkswap: /swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx

swaponコマンドで、スワップ領域を有効にします。

[root@ip-xxx ~]# swapon /swapfile

freeコマンドで、確認すると、Swap領域が作成されました。

[root@ip-xxx ~]# free
             total       used       free     shared    buffers     cached
Mem:       1018504     950208      68296      31980      28772     697060
-/+ buffers/cache:     224376     794128
Swap:      1048572          0    1048572

あとは、MySQLを再起動するだけです。

[root@ip-xxx ~]# service mysqld restart
mysqld を停止中:                                           [  OK  ]
mysqld を起動中:                                           [  OK  ]

お疲れ様でした。