mysql無法啟動——cannot allocate the memory for the buffer pool,allocatebuffer
今天開啟開發網站突然不能使用,發現時Mysql資料庫down掉了,就去重啟:
mysql.server restart
一直會報錯:“Manager of pid-file quit without updating file”。
然後就去找原因,網上說有以下三個方面的問題:
1、硬碟不夠用了,無法寫入pid檔案
2、進程卡死了,找到mysql進程kill掉,然後重啟
3、目錄許可權問題,找到pid檔案寫入的目錄,查看目錄許可權是否是使用的安裝mysql指定的使用者
上述是關於這個問題的最多的解決方案,但是我試了一下都沒效果。於是我去查看了mysql.err錯誤記錄檔檔案:
tail -100 mysql.err
發現了所示的錯誤:
直接可以看出是因為記憶體不足了,因此mysql無法啟動的真正原因其實是:
cannot allocate the memory for the buffer pool
然後就去檢查了一下記憶體:
free -ml
發現確實不足,只剩下300多M了,因此首先kill掉了機器上其他的一些無用的進程,接著去修改了my.cnf設定檔,找到了如下兩個欄位分別將前者由2G改為200M,後者改為了120M。
innodb_buffer_pool_size=200Mkey_buffer=120M
然後重啟Mysql後就可以了。
mysql服務啟動不了,下面是mysql的錯誤記錄檔
1、注意儲存引擎錯誤
Unknown/unsupported storage engine: InnoDB
2、檢查一下設定檔中關於innodb的參數,如果有skip-innodb注釋掉
3、如果重新設定了innodb_log_file_size之類的,需要刪除幾個ib_logfile,然後重啟資料庫
linux啟動mysql失敗
好好檢查下/etc/my.cnf是否有錯誤.