MySQL「Cannot allocate memory for the buffer pool」エラーが出て起動できないまたは落ちる場合の対処法

新しい環境でMySQLをスタートさせようとしたら…

[dacelo@space mysql]$ sudo service mysqld start
MySQL Daemon failed to start.
mysqld を起動中:                                           [失敗]

あら。何か失敗している。

ログで原因を把握

起動時のログを確認してみると…

[dacelo@space mysql]$ view log/mysqld.log
略
2019-07-25 14:10:00 11730 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2019-07-25 14:10:00 11730 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2019-07-25 14:10:00 11730 [ERROR] Plugin 'InnoDB' init function returned error.
2019-07-25 14:10:00 11730 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-07-25 14:10:00 11730 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-07-25 14:10:00 11730 [ERROR] Aborting
略

これだ。

InnoDB: Cannot allocate memory for the buffer pool
ここで止まっているのだ。

このサーバはわずか1GBしかメモリを積んでいない弱サーバのため、FREEが69MBしか残っていない。だからMySQLが必要なメモリ量を確保できないため、起動すらできていないのだ。

[dacelo@space/]$ free -m
total       used       free     shared    buffers     cached
Mem:           988        918         69          0        117        548
-/+ buffers/cache:        253        734

ここはスワップを追加して凌ぐこととしよう。
といってもディスク容量も少ないのだが…

広告

ディスク容量を確認

[dacelo@space mysql]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        15G  6.2G  7.8G  45% /
tmpfs           495M     0  495M   0% /dev/shm

スワップを作成

[dacelo@space /]$ sudo dd if=/dev/zero of=/home/swapfile bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 1.36466 s, 393 MB/s
[dacelo@space /]$ sudo mkswap /home/swapfile
mkswap: /home/swapfile: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
スワップ空間バージョン1を設定します、サイズ = 524284 KiB
ラベルはありません, UUID=0e204a7a-0dd9-4ace-83cd-0ba4f6b182c5
[dacelo@space /]$ sudo swapon /home/swapfile

もう一回ディスク容量を確認

[dacelo@space /]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        15G  6.7G  7.3G  49% /
tmpfs           495M     0  495M   0% /dev/shm

メモリを確認

[dacelo@space /]$ free -m
total       used       free     shared    buffers     cached
Mem:           988        918         69          0        117        548
-/+ buffers/cache:        253        734
Swap:          511          0        511

再度の起動に挑戦

[dacelo@space /]$ sudo service mysqld start
mysqld を起動中:                                           [  OK  ]

ひとまずこれでめでたしめでたし。

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *