mysqldump 到 tar.gz

mysqldump 到 tar.gz

通常,在使用指令轉儲 MySQL 資料庫後,mysqldump我會立即 tar/gzip 產生的檔案。我正在尋找一種方法來透過一個命令執行此操作:

所以由此可知:

mysqldump dbname -u root -p > dbname.sql
tar czvf dbname.sql.tgz dbname.sql
rm dbname.sql

對於這樣的事情:

mysqldump dbname -u root -p > some wizardry > dbname.sql.tgz

或者甚至更好(因為我通常將轉儲文件 scp 到另一台伺服器):

mysqldump dbname -u root -p > send dbname.sql.tgz to user@host

我在 Debian 上運行 bash。

答案1

mysqldump --opt <database> | gzip -c | ssh user@wherever 'cat > /tmp/yourfile.sql.gz'

您不能在這樣的管道中使用 tar,而且您也不需要它,因為您只輸出一個檔案。 tar 只有當您有多個檔案時才有用。

答案2

如果您在本地運行,只需使用以下命令來備份資料庫並使用 gzip 對其進行壓縮:

mysqldump -u userName -p (passwordPrompt) yourDatabaseName | gzip -c > output.gz 

(編按:固定-c鍵)

答案3

使用命名管道。

mkfifo mysql_pipe
gzip -9 -c < mysql_pipe > name_of_dump.gz &
mysqldump database > mysql_pipe 
rm mysql_pipe

我一直用它,太棒了。

http://en.wikipedia.org/wiki/Named_pipe

答案4

使用pv和監控率!

mysqldump prod_db -h dbslave | pv | gzip -c > prod_2012_08_20.dump.tgz

或者,如果您知道大小 (3GB),請獲得準確的估計:

mysqldump prod_db -h dbslave | pv -s 3g | gzip -c > prod_2012_08_20.dump.tgz

相關內容