Mysql

MariaDB 需要很長時間才能恢復備份

  • September 15, 2020

所以我做了mysqldump一個非常大的數據庫,我現在正在嘗試使用以下方法恢復它:

mysql db_test < db_test.sql

但看起來它不會在今年年底前結束。現在已經大約一個小時了,仍然在“恢復”。進行備份大約需要 10 分鐘,所以我擔心發生了一些不好的事情。

至今:

  • 我已經檢查過它mysqld正在消耗我的 cpu(有時高達 80%)。
  • 日誌中沒有任何相關內容。
  • 我可以看到創建並填充了大量表的數據庫(不是所有表)。此外,當我執行時use db_test;,我收到以下消息:

讀取表資訊以完成表名和列名您可以使用 -A 關閉此功能以獲得更快的啟動

  • 大約 25GB 的原始 db 文件在整個小時後df -h返回與以前相同的可用空間。所以我猜它在磁碟上沒有做任何事情。

奇怪的是,在檢查時top,我發現kworker有時會消耗高達 100% 的 cpu,這不應該發生


有什麼想法或我能做些什麼來看看發生了什麼嗎?

聽起來底層磁碟很忙。恢復大型數據庫的問題是每個(組)INSERT 都需要刷新/同步操作,這在機械磁碟上非常慢(7200 RPM 磁碟大約為 100 IOPS)。

為了加快恢復,您必須臨時指示 MySQL/MariaDB不要發出刷新/同步。為此,請中斷恢復並/etc/my.ini使用以下兩行進行編輯:

  • innodb_flush_method=nosync
  • innodb_flush_log_at_trx_commit=2

然後重新啟動 MariaDB 並重試還原。現在事情應該進展得更快了。

還原後,刪除上面的行,否則您的數據庫將有一個短暫而糟糕的生命週期:由於非常重要的原因而存在刷新/同步。雖然關閉它們以進行恢復是可以接受的,但生產數據庫不應該在沒有它們的情況下執行。

引用自:https://serverfault.com/questions/775672