Mysql
巨大的mysqldump導入
我有一個 200+GB 的 mysql 轉儲文件,我需要將其導入到我的開發機器上執行的本地 sql 伺服器中。我嘗試使用該方法進行簡單的轉儲還原,
mysql < db_backup.sql
並在遇到問題之前設法還原了大約 85% 的數據庫mysql伺服器已經消失
錯誤。這花了大約 5 天的時間。
我想知道是否有一種方法可以將部分恢復的數據庫與轉儲文件進行比較,以了解哪些表仍在等待處理,或者是否有明顯(至少 4 倍)更快的方法可以從巨大的轉儲文件中恢復。
任何意見,將不勝感激。謝謝。
感謝您提供更多資訊如果它是標準和預設設置,它對於大數據不是最佳的,所以您可以從:
- 找到 my.cnf 文件(它可能是幾個不同的位置,取決於安裝)
- 在 mysql 中執行 SHOW VARIABLES LIKE ‘innodb_file_per_table’; 如果它關閉 - 最好刪除 ibdata 文件並重新創建它
調整開始:
innodb_buffer_pool_size = 4G (or 8G) innodb_log_file_size = 1G innodb_file_per_table= ON (if it OFF) innodb_flush_log_at_trx_commit = 0 (because it development machine) innodb_log_buffer_size = 64M max_allowed_packet = 128M
它必須提高工作速度
如果 innodb_file_per_table= OFF 這意味著您的所有數據庫都在單個文件中,當您刪除和/或優化表時 mysql 不會釋放空間
在 innodb_file_per_table= ON 的情況下,TRUNCATE/OPTIMISE 的影響是暫時的,這對開發機器很重要。
上述所有工作始終有效,如果您決定重新載入所有轉儲,以及是否會採用其他方式。
對於已經恢復的:
- 簽入 MySQL “SHOW DATABASES”,預設情況下它按字母順序轉儲和恢復,所以問題將在列表中的最後一個
- 對於最後一個數據庫,逐表比較原始數據庫(如果可用),但最好完全重新載入
我不確定 - 你巨大的轉儲裡面有什麼,所以不能給出普遍的建議 - 如何正確拆分它。
在建議的 mysql 設置調整之後,雖然仍然比預期的慢,但恢復速度更快。
我查看了一些第 3 方實用程序,發現以下內容:https ://github.com/deviantintegral/mysql-parallel
這需要以特定格式重新創建轉儲,但之後恢復速度要快幾個數量級,以超過 1gb/分鐘的速度寫入數據庫。