阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用tar+pigz+ssh实现大数据的高效传输

145次阅读
没有评论

共计 759 个字符,预计需要花费 2 分钟才能阅读完成。

以前我们跨主机拷贝大数据的时候,比如要拷贝超过 100GB 的 mysql 原始数据,我们通常的做法如下:

  • 在源端打包压缩为 tar.gz 文件
  • 采用 scp 或者 rsync 等方式拷贝到目标主机
  • 在目标主机解压文件

这三个过程是同步阻塞,即不能同时异步执行,导致效率低下。

现在我们将过程优化为以数据流的方式,同时执行(非阻塞模式),则效率一般可以提高到原来的 3 倍以上,具体实现如下:

磁盘读取 —-> 打包 —-> 压缩 ——> 传输 —-> 解压缩 –> 拆包 —-> 落盘

                    |->tar    |->gzip      |->ssh      |->gzip  |->tar

比如我要将本地的 test 目录拷贝到“目标 IP”的的 data 目录,则命令如下:

tar -c test/ |pigz |ssh -c arcfour128 目标 IP “gzip -d|tar -xC /data”

当然,这里的解压过程仍然用了效率比较低下的 gzip,如果将解压工具换成 lz4(但需要单独编译安装),则效率可以再提高不少。

如果不需要解压,则命令变为:

tar -c test/ |pigz |ssh -c arcfour128 目标 IP “cat >/data/test.tar.gz”

注:因为采用了流式压缩,解压过程必须加上 - i 参数,及 tar –ixf /data/test.tar.gz。

说明: pigz 是一个高效的压缩工具,可以将多核 CPU 的每一分剩余性能都用来做压缩计算。而传统的 gzip 则只能用单核 CPU。比如一台 2 个 8core cpu 服务器采用 pigz 和 gzip 压缩相同的数据,一般性能差距至少在 7 - 8 倍以上(一般不会达到理论的 16 倍,因为受限于磁盘的读写速度和内存等资源)。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/141168.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计759字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中