
通常、コマンドを使用して 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
いつも使っていますが、素晴らしいです。
答え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