Mysql
MariaDB 需要很長時間才能恢復備份
所以我做了
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 並重試還原。現在事情應該進展得更快了。
還原後,刪除上面的行,否則您的數據庫將有一個短暫而糟糕的生命週期:由於非常重要的原因而存在刷新/同步。雖然關閉它們以進行恢復是可以接受的,但生產數據庫不應該在沒有它們的情況下執行。