2012-11-27 90 views
27

是否可以通過ssh連接從遠程主機轉儲數據庫並在本地計算機上備份該文件。來自遠程主機的mysqldump

如果是這樣如何實現?

我假設它將是管道輸出從ssh到轉儲的一些組合,反之亦然,但無法弄清楚。

+0

我已經在這裏回答了類似的答案:http://stackoverflow.com/questions/6564882/automate-mysqldump-to-local-computer-windows/13584425#13584425 –

回答

55

這將傾倒,壓縮和ssh流過到你的本地文件

ssh -l user remoteserver "mysqldump -mysqldumpoptions database | gzip -3 -c" > /localpath/localfile.sql.gz 
3

ssh -f [email protected] -L 3306:server.com:3306 -N

則:

mysqldump -hlocalhost > backup.sql

假設您還沒有MySQL的本地運行。如果你這樣做,你可以調整端口到別的東西。

+0

你能提供一個例子嗎 –

+1

我需要這個在一個單命令雖然這就是爲什麼我認爲會有管道組合 –

+0

你能解釋爲什麼你需要這個作爲一個單一的命令? –

10

從@ MichelFeldheim的解決方案開始,我會使用:

$ ssh [email protected] "mysqldump -u user -p database | gzip -c" | gunzip > db.sql 
0

我創建了一個script使它使用Michel Feldheim提供的答案作爲起點,更容易在遠程主機上自動執行mysqldump命令:

mysqldump-remote

該腳本可以讓你從遠程主機帶或不帶SSH和可選使用.env文件包含環境變量獲取數據庫轉儲。

我打算使用腳本進行自動數據庫備份。隨意create issues/contribute - 希望這可以幫助其他人!