2008-09-15 59 views
51

是否有任何文檔化的技術來加速mySQL轉儲和導入?加速mysql轉儲和導入

這將包括my.cnf中設置,使用的ramdisk等

僅尋找記載的技術,優選地與基準電位顯示高速化。

回答

15

http://www.maatkit.org/有MK-平行轉儲和MK-並行恢復

如果你一直希望爲多線程的mysqldump,希望沒了。該工具並行地轉儲MySQL表。這是一個非常智能的mysqldump,可以作爲mysqldump的包裝器(具有合理的默認行爲),也可以作爲SELECT INTO OUTFILE的包裝器。它針對非常大的數據量的高性能應用而設計,其中速度非常重要。它利用多個CPU和磁盤更快地轉儲數據。

在mysqldump中也有各種可能的選項,例如在導入轉儲時不做索引 - 而是在完成時完成它們。

4

在轉儲中使用擴展插入應該使導入速度更快。

+1

如果你這樣做的話,如果轉儲甚至適度大,你將無法再導入回來 – Jonathan 2009-02-21 20:33:45

+0

如何將MySQL客戶端是否能夠使用擴展插入程序處理中等大小的轉儲? – che 2009-02-21 22:07:02

+0

我的猜測是,客戶端對於讀取的每行都有一個固定大小的緩衝區,並且擴展插入超出了該限制。 – Ztyx 2010-04-19 09:10:51

24
  1. 獲取副本高性能MySQL。好書。
  2. 在垃圾堆
  3. 擴展刀片與--tab格式轉儲所以你可以使用的mysqlimport,這是比MySQL快<轉儲文件
  4. 導入多線程,每個表。
  5. 如果可能,請使用其他數據庫引擎。導入到像innodb這樣的大量事務性引擎非常緩慢。插入 到非事務性引擎如 MyISAM要快得多。
  6. 查看Maakit工具包中的表格比較腳本,看看您是否可以更新表格而不是轉儲它們並導入它們。但是 你可能在談論備份/恢復。
4

關閉外鍵檢查並打開自動提交。

13

如果要導入到InnoDB的,你可以做的最有效的事情是把

innodb_flush_log_at_trx_commit = 2 

my.cnf,暫時導入運行時。如果你需要ACID,你可以把它放回1

+0

我想知道,不會將它設置爲'0'更快? – 2013-06-01 07:50:52

+0

真的不明白這是什麼,但它加快了我的大型innoDB數據庫轉儲的恢復。對於MyISAM dbs增加`key_buffer_size`的幫助(可用內存的30%)。 – arun 2013-09-22 01:19:27

5

我想你的問題還取決於其中的瓶頸是:

  • 如果您的網絡是一個瓶頸,你也可以看看在-C/--compress標誌mysqldump
  • 如果您的計算機內存不足(即開始交換),您應該購買更多的內存。

而且,看看在--quick標誌mysqldump(和--disable-keys如果您正在使用MyISAM數據)。

1

mysqlhotcopy如果您只有MyIsam表格,也可能是您的替代選擇。