大文件跨服务器传送
2015年9月15日 19:02:47
<高性能mysql>里的内容
场景是将数据从一个服务器传递到另一个服务器中用于mysql数据初始化或恢复
本质的原理是压缩传输
1. 使用管道命令, 压缩的时候直接传输, 不再压缩到本地, 再传输到另一台server压缩
server1$ gzip -c /server1/data/file | ssh root@server2 "gunzip -c - > /server2/data/file"
2. 上一步用了ssh加密, 也可以不用加密的nc命令传输, 需要监听一个端口
server2$ nc -l -p 12345 | gunzip -c - > /server2/data/file //server2监听端口,等待数据传递进行解压缩
server1$ gzip -c - /server1/data/file | nc -q 1 server2 12345
注意:
1. 压缩命令的选择: 更快的压缩/解压但压缩率不高, 慢一些的压缩速度, 但是压缩率比较高 (gzip -l 压缩更快, lzo压缩更快, bzip2压缩率更高)
2. 压缩的时候用tar打包, 他解压的时候会自动命名
3. 用rsync支持断点续传
4. 通过监控来选择更好的方法 vmstat -n 5, 查看是磁盘IO还是cpu速度是瓶颈(千兆网卡的话,但cpu/磁盘不咋滴, 瓶颈就可能在读写文件上, 不压缩反而更快)