Mysql 錯誤InnoDB: mmap(8585216 bytes) failed; errno 12

Mysql 錯誤InnoDB: mmap(8585216 bytes) failed; errno 12

linux下mysql啟動錯誤,且無法啟動mysql服務,查看myql日誌,發現如下日誌:

2017-08-10 18:11:03 9772 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(136019968 bytes) failed; errno 12
2017-08-10 18:11:03 9772 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2017-08-10 18:11:03 9772 [ERROR] Plugin ‘InnoDB’ init function returned error.
2017-08-10 18:11:03 9772 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
2017-08-10 18:11:03 9772 [ERROR] Unknown/unsupported storage engine: InnoDB
2017-08-10 18:11:03 9772 [ERROR] Aborting

其中InnoDB: mmap(136019968 bytes) failed; errno 12是關鍵的錯誤信息。
從網上查資料,有人說修改innodb_buffer_pool_size,經過測試無效。
有人說是swap分區為0導致的此錯誤,使用free -m命令查看系統內存,發現swap確實為0。使用如下命令建立一個臨時的swap分區:

dd if=/dev/zero of=/swap bs=1M count=512 //創建一個swap文件,大小為512M
mkswap /swap //將swap文件變為swap分區文件
swapon /swap //將其映射為swap分區

此時使用free -m命令即可看到swap分區已存在了,然後啟動mysql服務即可。
為了保證下次系統啟動後,此swap分區被自動加載,需要修改系統的fstab文件,操作如下:

vi /etc/fstab
//在其中添加如下一行
/swap swap swap defaults 0 0

保存文件即可。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *