2014-11-23 132 views
2

我在一個數字海洋實例上託管一個WordPress網站,這是一個非託管雲實例。我以前有一個問題,當我去我的網站時,它說,數據庫連接沒有建立。那麼爲了使它工作,我需要重新啓動mysql服務。MySQL停止致命錯誤

現在我再次得到相同的錯誤,這個時間頻率也很高。所以我去了錯誤日誌,我認爲這個部分,我在這裏粘貼指向問題:

141123 3:15:39 InnoDB: The InnoDB memory heap is disabled 
141123 3:15:39 InnoDB: Mutexes and rw_locks use GCC atomic builtins 
141123 3:15:39 InnoDB: Compressed tables use zlib 1.2.3.4 
141123 3:15:39 InnoDB: Initializing buffer pool, size = 128.0M 
InnoDB: mmap(135987200 bytes) failed; errno 12 
141123 3:15:39 InnoDB: Completed initialization of buffer pool 
141123 3:15:39 InnoDB: Fatal error: cannot allocate memory for the buffer pool 
141123 3:15:39 [ERROR] Plugin 'InnoDB' init function returned error. 
141123 3:15:39 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 
141123 3:15:39 [ERROR] Unknown/unsupported storage engine: InnoDB 
141123 3:15:39 [ERROR] Aborting 

所以我覺得問題是,因爲它無法分配用於緩衝池內存,因爲這是致命的錯誤,然後這可能是什麼,這阻止了MySQL。但問題是我不知道如何解決它,如果這是真的認爲是造成問題?那麼它是與服務器配置相關還是可以在我的代碼中有一些野生查詢?請讓我知道你認爲可以解決這個問題?

在此先感謝你們。

---- ------更新

試圖@Sajidkhan的修復(以下答案之一)之後。 Sill mysql在一段時間後關閉,但是這次日誌有點不同。以下是我現在可以看到的。

141206 14:38:59 [Note] Plugin 'FEDERATED' is disabled. 
141206 14:38:59 InnoDB: The InnoDB memory heap is disabled 
141206 14:38:59 InnoDB: Mutexes and rw_locks use GCC atomic builtins 
141206 14:38:59 InnoDB: Compressed tables use zlib 1.2.3.4 
141206 14:38:59 InnoDB: Initializing buffer pool, size = 128.0M 
141206 14:38:59 InnoDB: Completed initialization of buffer pool 
141206 14:38:59 InnoDB: highest supported file format is Barracuda. 
InnoDB: The log sequence number in ibdata files does not match 
InnoDB: the log sequence number in the ib_logfiles! 
141206 14:38:59 InnoDB: Database was not shut down normally! 
InnoDB: Starting crash recovery. 
InnoDB: Reading tablespace information from the .ibd files... 
InnoDB: Restoring possible half-written data pages from the doublewrite 
InnoDB: buffer... 
141206 14:38:59 InnoDB: Waiting for the background threads to start 
141206 14:39:00 InnoDB: 5.5.31 started; log sequence number 512843890 

回答

0

如果您確實需要skip-innodb(用例:內存不足),那麼當然您不必評論它。但是,如果InnoDB是默認的存儲引擎,那麼直到您告訴它要使用哪個存儲引擎,服務器纔會啓動。對於MyISAM,默認存儲引擎= myisam。

試試這個:

sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam 
+0

但是如果我的數據庫使用innodb作爲存儲引擎會如何影響更改默認存儲引擎?我的意思是我們只會通過上面的命令更改默認存儲引擎,所以當它需要使用innodb時,不會再發生同樣的錯誤? – Hafiz 2014-11-25 12:33:26

+0

我試過這個,但它沒有工作仍然數據庫問題仍然存在,MySQL停止 – Hafiz 2014-12-06 16:55:04