mysql - -C 和压缩 mysqldump 之间有什么区别?

标签 mysql mysqldump

我想直接对我的远程主机执行 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 周期 - 它会压缩 mysqldumpmysqld 之间的协议(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/

相关文章:

mysql - 如何在 MySQL 表中存储数据以便快速访问?

MySQL - 循环的下一个/上一个 ID

mysql - 为第 3 方使用打包 MSSQL 数据库的最佳(最安全)方式?

mysql - 如何在 Mysql workbench 中的两个模型之间复制表?

mysql - 将 MySQL 转储文件导入 MSSQL

php - 将多维数组访问到单个数组

MySQL - 存储发送给大量用户的帖子

php - 如何在 php 下拉列表中显示特定值?

mysql - 如何在不停机的情况下将 MySQL 数据库移动到另一台服务器

mysql - 如何将 mysqldump 与本地主机 :3307? 一起使用