概要
AWS E2 インスタンス上に MySQL, SonarQube インストールし起動するものの
MySQL が落ちるという事象が発生。
ログを見ると以下のエラーが。。
| 12
 3
 4
 5
 6
 
 | 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
 [ERROR] Unknown/unsupported storage engine: InnoDB
 [ERROR] Aborting
 
 | 
| 12
 3
 
 | Cannot allocate memory for the buffer pool
 バッファープールへのメモリ割当ができない
 
 | 
割りあてるメモリがないという話。
なので、メモリを作ります。
対策 1. swap 領域を作成する
swap 領域作成
| 12
 3
 4
 5
 6
 7
 8
 
 | // 空ファイル作成
 
 // 作成した空ファイルをswap領域に設定
 
 
 // スワップ領域を有効化
 
 
 | 
swap 領域確認
| 12
 3
 4
 5
 
 | 
 total        used        free      shared  buff/cache   available
 Mem:        1015472      833592       66456        1456      115424       54708
 Swap:       1048572      491136      557436   ← Swapの設定が追加されていることを確認
 
 | 
mysql 再起動
対策 2. innodb_buffer_pool_size の割当を増やす
現在設定されている innodb_buffer_pool_size 確認
| 12
 3
 4
 5
 6
 7
 
 | $ mysql -u <user> -p<pass> <db>  -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size'"
 +-------------------------+-----------+
 | Variable_name           | Value     |
 +-------------------------+-----------+
 | innodb_buffer_pool_size | 118835956 |
 +-------------------------+-----------+
 
 | 
エラーログにあった 137363456 を下回ってるのがわかります。
この割当メモリを増やします。
my.cnf の場所探し
左から順に検索し該当するファイルがあればその my.cnf を参照します。
/etc/my.cnf → /etc/mysql/my.cnf → /usr/etc/my.cnf → ~/.my.cnf
| 12
 3
 
 | order of preference, my.cnf, $MYSQL_TCP_PORT,
 /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
 
 | 
メモリ追加
自分の方では
my.cnf 上に innodb_buffer_pool_size の設定項目がなかったので
追加しました。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | [mysqld]...
 ...
 
 
 innodb_buffer_pool_size = 256M
 
 [mysqld_safe]
 ...
 ...
 
 | 
mysql 再起動
増えているか確認
| 12
 3
 4
 5
 6
 7
 
 | $ mysql -u <user> -p<pass> <db>  -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size'"
 +-------------------------+-----------+
 | Variable_name           | Value     |
 +-------------------------+-----------+
 | innodb_buffer_pool_size | 268435456 |
 +-------------------------+-----------+
 
 | 
今回発生していたエラーログが消えました。