使用innodb表導出/導入mysql數據庫的最快方法是什麼?什麼是導入大型mysql數據庫備份的最快方法?
我有一個生產數據庫,我需要定期下載到我的開發機器來調試客戶問題。我們目前這樣做的方式是下載我們的常規數據庫備份,這些備份是使用「mysql -B dbname」生成的,然後進行gzip壓縮。然後我們使用「gunzip -c backup.gz | mysql -u root」來導入它們。
從我讀的「mysqldump --help」中可以看出,mysqldump默認運行了--opt,這看起來好像打開了一堆我能想到的東西,這會使導入速度更快,例如關閉索引並將表導入爲一個大量導入語句。
有沒有更好的方法來做到這一點,或進一步優化我們應該做的?
注意:我主要想優化將數據庫加載到我的開發機器(相對較新的macbook pro,有很多內存)所需的時間。備份時間和網絡傳輸時間目前並不是什麼大問題。
更新:
要回答的答案中提出了一些問題:
生產數據庫模式的改變每週最多幾次。我們正在運行rails,所以在過時的生產數據上運行遷移腳本相對比較容易。
我們需要將生產數據潛在地按每天或每小時放入開發環境。這完全取決於開發人員的工作。我們經常遇到特定的客戶問題,這些問題是由於某些數據分佈在數據庫中的多個表中而導致的,需要在開發環境中進行調試。
我真的不知道mysqldump需要多長時間。不到2小時,因爲我們目前每2小時運行一次。但是,這不是我們想要優化的內容,我們希望優化對開發人員工作站的導入。我們不需要完整的生產數據庫,但將我們做和不需要的東西(有很多表與外鍵關係)分開並不是完全微不足道的。這可能是我們最終必須去的地方,但是如果可以的話,我們希望避免它一段時間。
我回答了您的問題,作爲對我的問題的編輯。你提出了一些好的觀點。我還沒有放棄mysqldump,我更懷疑是否有一種方法可以優化它,而不僅僅是使用默認值,根據我的情況(優化導入速度)。 – 2009-04-26 02:58:15