Mysql

mysqldump 文件恢復,而 sql 仍在轉儲

  • May 23, 2021

我使用 MaridaDB 10,但我的問題適用於所有 mysql 變體。我有大型數據集(轉儲到文件時未壓縮 70GB)。

mysqldump 過程需要 2-3 小時。恢復過程需要更長的時間 10-14 小時。

我有一個用於在許多伺服器之間同步數據的 nfs 共享。我的問題是具體的.. 如果我有 mysqldump 程序正在執行並將數據輸出到 /nfs/file.sql 並且說是 ~35gb(50% 完成)。我可以在不同的伺服器上啟動恢復過程(mysql < /nfs/file.sql)並讓它按預期工作嗎?(完成後完成文件末尾)。

我不擔心恢復過程領先於 mysqldump。即使有 20% 的緩衝,也不太可能。

你可以做一些事情來加快整個過程

第 1 步:禁用雙寫緩衝區/增加日誌緩衝區大小

轉到目標伺服器。以root身份登錄o mysql並執行

mysql&gt; SET GLOBAL innodb_fast_shutdown=0;

然後像這樣重啟mysqld

service mysql restart --innodb-doublewrite=OFF --innodb-log_buffer-size=268435456

這將禁用雙寫緩衝區並使日誌緩衝區為 256M

預先執行SET GLOBAL innodb_fast_shutdown=0;會完全刷新 InnoDB。

第 2 步:將 mysqldump 從源伺服器傳送到目標伺服器

mysqldump ... | mysql ...

這不會將轉儲保存到文件中。這會將命令直接發送到目標伺服器

STEP 3 : 在目標伺服器上重啟 mysqld(恢復原來的選項)

service mysql restart

推薦閱讀

我之前建議禁用雙寫緩衝區

我之前還建議將 mysqldump 管道傳輸到 mysql 客戶端

檢查冗餘索引並刪除它們。這將有助於重新載入。

而是將轉儲和重新載入分開,將第一個管道傳輸到第二個。這將掩蓋 2-3 小時,並消除一些 I/O。

引用自:https://dba.stackexchange.com/questions/183655