Mysql
mysqldump 文件恢復,而 sql 仍在轉儲
我使用 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> 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
推薦閱讀
我之前建議禁用雙寫緩衝區
May 03, 2014
:優化大量 INSERT … SELECT 語句Dec 19, 2014
:什麼時候禁用 InnoDB 雙寫緩衝是安全的?Sep 29, 2016
: MySQL 設置對加速 mysqldump 導入很有用我之前還建議將 mysqldump 管道傳輸到 mysql 客戶端
Jan 13, 2012
: MySQL - MySqlDump 使用 \n 而不是 nullMar 02, 2012
:如何記錄 mysqldump 的詳細輸出?Nov 11, 2016
:單個文件上的大型 MYSQL DBNov 23, 2016
:移動大型數據庫
檢查冗餘索引並刪除它們。這將有助於重新載入。
而是將轉儲和重新載入分開,將第一個管道傳輸到第二個。這將掩蓋 2-3 小時,並消除一些 I/O。