mysqldump压缩

mysqldump压缩,mysql,Mysql,我试图了解mysqldump是如何工作的: 如果我在电脑上执行mysqldump并连接到远程服务器: mysqldump -u mark -h 34.32.23.23 -pxxx --quick | gzip > dump.sql.gz 服务器会将其压缩并以gzip的形式发送给我,还是我的计算机会先接收所有数据,然后再进行压缩 因为我有一个非常大的远程数据库导出,我想知道最快的方式做它在网络上 我就是这样做的: 使用选择到OUTFILE执行部分导出,并在同一服务器上创建文件 如果您的表

我试图了解mysqldump是如何工作的:

如果我在电脑上执行mysqldump并连接到远程服务器:

mysqldump -u mark -h 34.32.23.23 -pxxx  --quick | gzip > dump.sql.gz
服务器会将其压缩并以gzip的形式发送给我,还是我的计算机会先接收所有数据,然后再进行压缩

因为我有一个非常大的远程数据库导出,我想知道最快的方式做它在网络上

我就是这样做的:

使用
选择到OUTFILE
执行部分导出,并在同一服务器上创建文件

如果您的表包含1000万行。每次部分导出100万行,每次在单独的文件中导出

一旦第一个文件准备好,您就可以压缩和传输它。与此同时,MySQL可以继续将数据导出到下一个文件

在另一台服务器上,可以开始将文件加载到新数据库中


顺便说一句,很多都可以编写脚本。

您应该使用ssh+scp,
因为本地主机上的转储速度更快,
您只需要通过gzip进行scp(较少的网络开销)

很可能你能做到

ssh $username@34.32.23.23 "mysqldump -u mark -h localhost -pxxx --quick | gzip > /tmp/dump.sql.gz"

scp $username@34.32.23.23:/tmp/dump.sql.gz .
(可选目录/tmp,应更改为您熟悉的任何目录)

您是否尝试过--compress参数


如果这一行在你的电脑上执行,那么
gzip
也会在你的电脑上运行。这意味着您将获得未压缩的原始转储。是的,它减少了大量数据传输!但我想了解的是:如果mysqldump将数据缓存在我的电脑或远程服务器上。。据我所知,它确实首先在我的电脑上传输所有数据。我说的对吗?关于
--compress
参数如何工作的文档并不多。我可以做出一个有根据的猜测,但需要查看来源才能确定。但我想你的问题是它是得到压缩的服务器端还是客户端。在您的示例中,它当然是客户端。如果您看到compress参数减少了数据传输,那么这应该可以回答您的问题,即它会压缩it服务器端。好主意,问题是我正在处理cleardb(它是amazon rds的一个商业实例),而我没有设法通过ssh登录。。不知道这是否可能!是的,这是下一步。。但在(虚拟)共享数据库上,我认为他们不会让我这么做:(您在数据库服务器附近有EC2或任何其他服务器?如果有,请在该服务器上运行命令,然后将scp返回到您的pc。否则,请忍受缓慢的网络传输…不幸的是没有EC2..但我可以购买一个每小时一次的实例来执行此xfer..谢谢提示!我经常这样做,效果很好。我想补充一句:如果您是要更新以前转储过的表的转储(备份?),可以使用
mysqldump | gzip--rsyncalbe
rsync
而不是
scp
,将文件转储到其目标。这样可以防止获取已有的位。在Amazon RDS中无法使用OUTFILE