-C和gzipping mysqldump有什么区别?

use*_*084 14 mysql mysqldump

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

mysqldump -C -u root -p database_name | mysql -h other-host.com database_name
Run Code Online (Sandbox Code Playgroud)

D.S*_*ley 15

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

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

mysqldump -u root -p database_name | mysql -C -h other-host -Ddatabase_name -B
Run Code Online (Sandbox Code Playgroud)

输出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"
Run Code Online (Sandbox Code Playgroud)

前提是你在另一台机器上运行SSH.