2012-03-27 64 views
16

我想了解的mysqldump如何工作的:的mysqldump壓縮

,如果我在我的電腦執行mysqldump和連接到遠程服務器:

mysqldump -u mark -h 34.32.23.23 -pxxx --quick | gzip > dump.sql.gz 

將在服務器壓縮它,並把它交給了我作爲gzip或將我的電腦先收到所有的數據,然後壓縮它?

因爲我有一個非常大的遠程數據庫導出,並且我想知道通過網絡執行它的最快方法!

+0

如果此行您的PC上執行的那麼'gzip'將您的PC上運行了。這意味着你將得到未壓縮的原始轉儲。 – pritaeas 2012-03-27 10:28:00

回答

29

你應該使用SSH + SCP的,
因爲在本地主機上轉儲速度更快,
,你只需要使用scp過的gzip(較小的網絡開銷)

可能是你能做到這一點

ssh [email protected] "mysqldump -u mark -h localhost -pxxx --quick | gzip > /tmp/dump.sql.gz" 

scp [email protected]:/tmp/dump.sql.gz . 

(提供/ tmp目錄可選,應該改變任何目錄你舒服)

+0

好主意,問題是,我正在處理cleardb(這是亞馬遜RDS的商業實例),我沒有設法通過SSH登錄..不知道它是否會可以! – 2012-03-27 18:33:10

+0

檢查與支持? – ajreal 2012-03-27 18:34:28

+0

是的,這是下一步..但在一個(虛擬)共享數據庫我不認爲他們會讓我這樣做:( – 2012-03-27 18:38:11

0

這是我要做的事:

做使用SELECT INTO OUTFILE部分出口,在同一臺服務器上創建的文件。

如果您的表包含1000萬行。每次進行100萬行的部分導出,每次單獨導出一個文件。

一旦第一個文件準備就緒,您可以壓縮並傳輸它。與此同時,MySQL可以繼續將數據導出到下一個文件。

在另一臺服務器上,您可以開始將文件加載到新數據庫中。

順便說一句,很多這可以腳本。

+0

OUTFILE是不可能在亞馬遜RDS – codewandler 2017-02-16 02:05:44

11
+0

是的,它減少了大量的數據傳輸!但是我想了解的是:如果mysqldump將數據緩存在我的電腦或遠程服務器上。從我所瞭解的情況來看,它確實先傳輸了我電腦上的所有數據。我是否正確? – 2012-03-27 18:32:11

+0

關於'--compress'參數的工作方式沒有太多的文檔,我可以做一個有根據的猜測,但需要看看源代碼是否可以。但我認爲你的問題是它是否得到了壓縮的服務器端或客戶端IDE。在你的例子中肯定是客戶端。如果你看到壓縮參數減少數據傳輸,那麼這應該回答你的問題,它壓縮它的服務器端。 – 2012-03-27 18:56:16