数据迁移-如何批量网站搬家,快速将网站迁移新服务器
网站搬家
对经营网站的站长来说,网站搬家是一件头疼的事,尤其存在大量碎文件的网站来说,简直是噩梦,我之前也是被网站搬家折腾的不行,搬家的时候还损坏过一次数据。然后没有数据备份,损失可想而知。
传统网站搬家方案
网站搬家都是三个步骤
- 原始服务器压缩打包
- 传输压缩包到新服务器
- 新服务器解压压缩包
但是这种数据传输方式,会面临很多问题。
- 整个搬家过程原始服务器资源会消耗殆尽,影响网站访问
- 搬家过程中网站不能有更新,否则新服务器内容就有部分丢失
- 时间过长,压缩打包传输解压包,看似没啥大问题,但是数据一大消耗的时间呈指数上升
Rsync方式传输
这种方式看起来比打包传输的方式好,
- 优点:实时同步,同步完可以直接使用新服务器数据
- 缺点:碎片化的文件同步时间特别慢,250G左右的数据消费了将近30个小时,时间全部消耗在建立TCP三次握手协议上了,每一个文件都要建立一次握手
Rsync 对大量碎片文件推荐不高,还有就是如果服务器是window的服务器,我不知道百度云的文件同步功能是否给力。
流式非落地打包压缩传输
多次迁移服务器之后,我在思考是否可以利用linux 管道符命令 将数据打包、压缩、 传输、解压数据流、最后落盘。
最后尝试有下面的命令
tar -c /www/wwwroot//www.test.com/ |gzip |ssh -c arcfour128 192.168.10.11 "gzip -d|tar -xC /
操作步骤
传输依赖老服务器免密登录新服务器
- 生成公私钥
在老服务器上执行这个命令 ssh-keygen 之后一路回车下去 就ok
root@logstash01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
b0:f5:8a:f6:c3:f5:85:cf:9c:f7:55:28:15:ba:4c:60 root@logstash01
The key's randomart image is:
+--[ RSA 2048]----+
| E . |
| . . . . |
| . . o . |
| + . o o . |
| . S . +.. .|
| . .. ... .|
| o... . = ..|
| . .o . = o|
| .. .o|
+-----------------+
[root@logstash01 ~]#
- 执行执行免密操作
在老服务器执行如下命令 192.168.10.11是新站的IP 然后输入yes和输入密码
ssh-copy-id 192.168.10.11
- 数据同步
执行下面命令 将/home/wwwroot/下的www.test.com 这个目录和目录下所有内容 同步到目标服务器 的/home/wwwroot/下
nohup `tar -c /home/wwwroot/www.test.com/ |gzip |ssh -c aes128-ctr 192.168.10.11 "gzip -d|tar -xC /" ` &
- 优化防止中断
上面的命令发现 断开ssh连接之后 文件传输会断,对以上命令进行修改 创建一个文件rsynct.sh在/www/wwwroot 目录
#!/bin/bash
tar -c www.test.com |gzip |ssh -c aes128-ctr 192.168.10.11 "gzip -d|tar -xC /www/wwroot"
- 执行
然后只需要cd 到/www/wwwroot 执行即可 这样执行就可以安稳的断开xshell了
cd /www/wwwroot
nohup sh rsynct.sh &
- 同步后检查
目标端检查同步进程是否完成
ps -ef |grep gzip
然后在老服务器检查 那个任务跑完了 需要安装iotop
yum install iotop -y
itop # 如果没完成会看到 tar -c www.test.com 读取硬盘的进程还在
- 机器性能检查
我先建议检查下新老机器的磁盘性能,根据多个场景测试,发现大部分瓶颈都在磁盘的文件读取速度上面,有的机器能跑满带宽,有些机器因为磁盘性能问题 最多也就跑几M的速度。 有些机器IO高的 网站同步速度 100G 数据 仅仅需要半个小时。
yum install hdparm -y #安装hparm 软件
hdparm -t /dev/sdb #测试数据盘读取能力
用手机扫描下方二维码可在手机上浏览和分享
评论功能已关闭