mysqldump を tar.gz に

mysqldump を tar.gz に

通常、コマンドを使用して MySQL データベースをダンプした後、mysqldump結果のファイルをすぐに tar/gzip します。これを 1 つのコマンドで実行する方法を探しています:

つまり、次のようになります。

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 を使用することはできません。また、1 つのファイルのみを出力するため、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/名前付きパイプ

答え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

関連情報