发送之前压缩流数据

发送之前压缩流数据

以下工作符合预期。

发送服务器:

mysqldump db_name tbl_name -d | nc -l 1234

接收服务器:

nc 10.10.10.114 1234 | mysql -uroot -proot@123 test

当我将数据转储到远程服务器时,传输数据需要很长时间。是否可以添加 tarjcf -和焦油jxf -在这个过程中。

答案1

当然:

mysqldump db_name tbl_name -d | bzip2 -c | nc -l 1234

nc 101010.114 1234 | bzip2 -cd | mysql -uroot -proot@123 test

(如果您愿意,可以bzip2gzip或其他压缩程序替换它们;它们在 Linux 中的工作方式大致相同)

没有必要使用 tar;您只是将数据作为单个文本块从 MySQL 转储出来。您还nc以通常被认为是“倒退”的方式使用;通常数据消费者(mysql在本例中)进行监听(但操作上没有实际差异,只是“感觉”很奇怪)。

但请注意,这种方法实际上可能不会使任何事情变得更快——根据我的经验,MySQL 转储/加载的瓶颈是 MySQL,而不是网络(除非您在严重带宽受限的链路上运行它)。

答案2

通过 tar 管道传输应该可以正常工作。

正在发送:

... | tar -cjf - | ...

接收

... | tar -xjf - | ...

您可能想使用“z”,因为它使用 gzip 压缩而不是更昂贵的 bzip2,但这取决于它为您工作的速度。

相关内容