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

相关内容