通常在使用命令转储 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