我想直接对我的远程主机执行 mysqldump。我看到了使用 -c 开关或使用 gzip 动态压缩数据(而不是在文件中)的建议。两者有什么区别?我如何知道两台机器是否都支持 -C 开关?我将如何即时进行 gzip 压缩?我在两台机器上都使用 Linux。
mysqldump -C -u root -p database_name | mysql -h other-host.com database_name
最佳答案
-C
选项使用 MySQL 客户端-服务器协议(protocol)中可能存在的压缩。 Gzip'ing 将在管道中使用 gzip
实用程序。我很确定后者不会有任何好处,因为在这种情况下,压缩和解压缩将发生在同一台机器上。如果您要转储的机器是本地的,那么 -C
选项可能只是在浪费 CPU 周期 - 它会压缩 mysqldump
和 mysqld 之间的协议(protocol)消息
守护进程。
在这里可能有意义的唯一命令管道是:
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。
关于mysql - -C 和压缩 mysqldump 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4965278/