-C和gzipping mysqldump有什么区别?

时间:2011-02-11 03:14:27

标签: mysql mysqldump

我想直接对我的remotehost执行mysqldump。我已经看到了使用-c开关或使用gzip动态压缩数据(而不是文件中)的建议。这两者有什么区别?我如何知道两台机器是否支持-C开关?我怎么能在飞行中做一个gzip?我在两台机器上都使用linux。

mysqldump -C -u root -p database_name | mysql -h other-host.com database_name

2 个答案:

答案 0 :(得分:15)

-C选项使用可能存在于MySQL客户端 - 服务器协议中的压缩。 Gzip'ing将在管道中使用gzip实用程序。我很确定后者不会有任何好处,因为在这种情况下压缩和解压缩会在同一台机器上发生。如果您要转储的计算机是本地计算机,则-C选项可能只是浪费CPU周期 - 它会压缩mysqldumpmysqld守护程序之间的协议消息。

这里唯一可能有意义的命令管道就是:

mysqldump -u root -p database_name | mysql -C -h other-host -Ddatabase_name -B

mysqldump的输出将转到mysql命令行客户端将读取的管道。 -C选项告诉mysql压缩它发送给other-host的邮件。 -B选项禁用mysql客户端中的缓冲和交互行为,这可能会加快速度。

执行以下操作可能会更快:

mysqldump -u root -p database_name | gzip > dump.gz
scp dump.gz user@other-host:/tmp
ssh user@other-host "gunzip /tmp/dump.gz | mysql -Ddatabase_name -B; rm /tmp/dump.gz"

如果你在另一台机器上运行了SSH。

答案 1 :(得分:0)

我总是阅读这些类型的东西的手册页。如果您查看man pages for mysqldump,可以看到-C(即大写 C)标志使mysqldump仅压缩传输中的所有数据 。这使得它流式压缩,但正如您将看到的那样,未压缩到达。您可以将文件转储到本地系统,然后同时传输一切gzip。

来自手册页:

   o   --compress, -C

       Compress all information sent between the client and the server if
       both support compression.