mysqldump -u root -p -q -e -t webgps4 dn_location2 > dn_location2.sql mysqldump -u root -p -q -e -t --single-transaction webgps4 dn_location2 > dn_location2.sql source dn_location2.sql
以上是導入導出數據的語句,該方法15分鐘導出1.6億條記錄,導出的文件中平均7070條記錄拼成一個insert語句,經過source進行批量插入,導入1.6億條數據耗時將近5小時。平均速度:3200W條/h。後來嘗試加上--single-transaction參數,結果影響不大。另外,若在導出時增長-w參數,表示對導出數據進行篩選,那麼導入導出的速度基本不變,篩選出的數據量越大,時間越慢而已。對於其中的參數這裏進行說明:mysql
–quick,-q
該選項在導出大表時頗有用,它強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得全部記錄後將它們緩存到內存中。
web
--extended-insert, -e
使用具備多個VALUES列的INSERT語法。這樣使導出文件更小,並加速導入時的速度。默認爲打開狀態,使用--skip-extended-insert取消選項。sql
--single-transaction數據庫
該選項在導出數據以前提交一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。它只適用於多版本存儲引擎,僅InnoDB。本選項和--lock-tables 選項是互斥的,由於LOCK TABLES 會使任何掛起的事務隱含提交。要想導出大表的話,應結合使用--quick 選項。在本例子中沒有起到加快速度的做用
mysqldump -uroot -p --host=localhost --all-databases --single-transaction
緩存
-t 僅導出表數據,不導出表結構服務器