以下工作符合预期。
发送服务器:
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
(如果您愿意,可以bzip2
用gzip
或其他压缩程序替换它们;它们在 Linux 中的工作方式大致相同)
没有必要使用 tar;您只是将数据作为单个文本块从 MySQL 转储出来。您还nc
以通常被认为是“倒退”的方式使用;通常数据消费者(mysql
在本例中)进行监听(但操作上没有实际差异,只是“感觉”很奇怪)。
但请注意,这种方法实际上可能不会使任何事情变得更快——根据我的经验,MySQL 转储/加载的瓶颈是 MySQL,而不是网络(除非您在严重带宽受限的链路上运行它)。
答案2
通过 tar 管道传输应该可以正常工作。
正在发送:
... | tar -cjf - | ...
接收
... | tar -xjf - | ...
您可能想使用“z”,因为它使用 gzip 压缩而不是更昂贵的 bzip2,但这取决于它为您工作的速度。