當 MariaDB 在關閉期間卡住時(等待 page_cleaner),如何修復 MariaDB?

當 MariaDB 在關閉期間卡住時(等待 page_cleaner),如何修復 MariaDB?

我正在 Arch Linux (Manjaro) 上運行 MariaDB (v 10.3.13)。過去幾個月一切正常,但現在出現了一些問題。當我嘗試重新啟動電腦時,它卡在

A stop job is running for MariaDB 10.3.13 database server

所花費的時間每分鐘都會增加,直到最終超時(大約 20 分鐘後)。

當我嘗試使用以下命令重新啟動/停止 MariaDB 時,手動停止 MariaDB 也會陷入困境

sudo systemctl stop/restart mariadb

然後跑sudo systemctl status mariadb節目

/usr/bin/mysqld (initiated by: unknown): Normal shutdown
Event Scheduler: Purging the queue. 0 events
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
InnoDB: Buffer pool(s) dump completed at 190402 20:31:01
InnoDB: Waiting for page_cleaner to finish flushing of buffer pool 

每分鐘都會再InnoDB: Waiting for page_cleaner to finish flushing of buffer pool增加一行。

有沒有辦法重置 MariaDB?或者有一種方法可以獲取更多信息,問題是什麼?

PS:我最近透過套件管理器安裝了一些更新,之後我第一次注意到這個問題。

更新:

當我卸載、重新啟動並重新安裝 MariaDB 時,我可以毫無問題地停止/重新啟動 MariaDB,並且關閉也不會出現問題。但再次啟動後,我又回到了上述問題。

答案1

經過一個多小時的努力,我終於解決了這個問題。

罪魁禍首是timedatectl set-local-rtc 1Win10 雙啟動的時間設定 ( )。

由於最近的時間變化,時鐘被搞亂了。 (狀態日誌條目為sudo systemctl status mariadb未來1小時)

環境

timedatectl set-local-rtc 0

並重新啟動解決了它。

答案2

您也可以TimeoutSec=300從 mysql 啟動服務設定檔中變更並減少逾時值(5 分鐘):

vi /usr/lib/systemd/system/mariadb.service

### after editing timout value in above config file you can apply it by using:
systemctl daemon-reload

筆記: 這不是修復或這個問題的解決方案。它只是減少服務終止超時值。您應該考慮根據導致作業系統和服務上發生這種情況的情況或錯誤找到正確的解決方案,並在問題解決後將逾時恢復為其預設建議值。

相關內容