从老服务器搬到雨云云服务器,最怕两件事:迁移过程丢数据,切换域名后用户连不上。按下面这套流程走,rsync 增量同步做好预迁、数据库导出导入、DNS 用低 TTL 切换并留好回滚预案,能最大程度保证平稳上云。
一、迁移前的准备清单
- 在雨云控制台开一台至少和老服务器同等配置的机器,系统版本建议一致;
- 配好安全组(只放 80/443 和你的 SSH IP),安装基础环境(Nginx/PHP/MySQL 版本对齐);
- 域名管理后台登录好,准备调 DNS;
- 老服务器确认有足够磁盘做最终全量备份。
雨云云服务器新购用优惠码 admin01 走专属入口 https://www.jiyueip.com/link/5617 五折,迁移期间临时开两台(老一根、新一根)成本不高。
二、第一步:rsync 预同步(不停老服)
先做一次全量同步,把绝大多数文件拷过去。这段时间老服务器正常对外:
rsync -avzP --exclude='cache/' --exclude='tmp/' -e "ssh -p 22" /var/www/html/ root@雨云IP:/var/www/html/
–exclude 跳过缓存和临时目录,这些没迁移价值还慢。第一次 rsync 可能比较久,看数据量。
三、第二步:数据库导出导入
数据库不能一边跑业务一边拷(会不一致)。做法是先用 mysqldump 导出,在老服务器上不影响业务:
# 老服务器 mysqldump -u root -p --single-transaction --all-databases > /tmp/fullbackup.sql gzip /tmp/fullbackup.sql rsync -avzP /tmp/fullbackup.sql.gz root@雨云IP:/tmp/
–single-transaction 对 InnoDB 表做一致性快照,不锁表。然后在雨云新服务器上导入:
gunzip < /tmp/fullbackup.sql.gz | mysql -u root -p
四、第三步:最终增量同步 + 切换
这是唯一的短暂中断窗口。先把老服务器设为维护模式(返回 503),再做最终 rsync(只传差异部分,很快):
# 老服务器 Nginx 切维护模式 # mv /etc/nginx/sites-enabled/yoursite /tmp/ # 然后增量同步 rsync -avzP --delete --exclude='cache/' --exclude='tmp/' -e "ssh -p 22" /var/www/html/ root@雨云IP:/var/www/html/
确认文件同步完、数据库已导入、雨云机器上能本地 curl 通,切 DNS。
五、DNS 切换与 TTL 技巧
切入正题前几小时,先把域名的 A 记录 TTL 降到 60 秒(如果原来的很大,需提前设,TTL 是缓存到期后才生效新值)。切换时把 A 记录指向雨云 IP,最长 60 秒内用户就跑到新服务器了。
关键回滚机制:保留老服务器的配置和环境至少 48 小时,DNS 切回原 IP 也是 60 秒内生效。万一迁移后出问题,不用从备份恢复,直接切回原 IP。
六、迁移后的检查项
- curl -I 雨云IP 看返回 200;
- 检查 PHP 错误日志有没有报缺失扩展;
- 登录 WordPress 后台跑一下,看文章、插件、主题是否正常;
- 检查文件权限(www-data 读写的目录);
- 确认 crontab 任务已迁移(老服务器的定时备份等)。
七、完整迁移时间线
| 步骤 | 操作 | 是否停机 |
|---|---|---|
| T-24h | DNS TTL 降到 60s | 否 |
| T-2h | 第一次 rsync 全量 | 否 |
| T-30min | 数据库导出→导入 | 否 |
| T-5min | 老服切维护模式、最终 rsync | 是(约 5 分钟) |
| T | DNS 切指向新 IP | 否 |
| T+48h | 确认无问题,关闭老服务器 | 否 |
八、几个易翻车点
- PHP 版本不对——老服务器跑 PHP 7.4 新装 PHP 8.2,代码里有不兼容函数直接报 500。迁移前先确认版本;
- MySQL 字符集不一致——导出文件里没指定字符集,导入后中文全变问号;
- rsync 忘了 –delete 导致老文件残留;
- 迁移后忘了更新 WordPress 的 siteurl 和 home 字段,后台登录跳回老域名。
常见问题
关于从其他平台迁移到雨云的常见疑问,下面一并解答。






