
通常,在使用指令轉儲 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
我一直用它,太棒了。
答案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