换 VPS 商家不丢数据:迁移全流程与回滚方案
2026-08-15 · DevCraft Studio
续费涨价、线路变差想换机器?从 rsync 整盘与增量同步、MySQL/PostgreSQL 导出导入、DNS 先降 TTL 再切换,到切换后验证与回滚预案,给你一套尽量零停机的 VPS 迁移 checklist。
买便宜 VPS 的人,迟早都要面对"搬家":续费价格翻倍、线路忽然抽风、商家缩减机房、甚至传闻跑路。最让人头大的不是花钱,而是机器上跑了三年的博客、监控、密码库、几万份文件——怎么才能换台机器还不丢数据、最好还不停机?这篇把实战流程拆开:从搬家前的盘点、rsync 整盘同步、数据库导出、DNS 低 TTL 切换,到切换后验证和一键回滚,给你一套能照着抄的 checklist。涉及的商家以 RackNerd、CloudCone、Vultr、Bandwagon 这类常见便宜 VPS 为例。
延伸阅读
更多相关攻略推荐:【知识库自托管 02】2026 实测:VPS 自托管 Anythin、抢补货/盯降价不求人:changedetection.io 自托管监、【知识库自托管 03】2026 实测:搬瓦工/RackNerd 上自、不写代码也能跑 AI:Flowise 自托管 + Ollama 搭建、老牌但能打:Huginn 自托管自动化代理,RSS 聚合+网页监控实。
一、搬家前先盘点
- 配置与依赖:操作系统版本、Web 服务(Nginx/Apache/Caddy)、运行时(PHP/Node/Python)、数据库(MySQL/MariaDB/PostgreSQL)。新老机器尽量同发行版同大版本,少踩依赖坑。
- 数据量:用 du -sh 看下总大小,评估传输时间。几十 GB 走 rsync 几小时;几百 GB 建议先在老机器压缩或挑重点。
- 对外关联:哪些服务依赖当前 IP?邮件服务、第三方 API 白名单、防火墙规则、监控告警、SSH known_hosts、Let's Encrypt 的 DNS 校验记录——列个清单,搬完逐个改。
- 停机窗口:真要零停机,靠"双机并行 + DNS 切换";接受几分钟中断的,直接低峰期切。
二、rsync 整盘与增量同步
文件传输主力是 rsync,增量、可断点续传、能保留权限。最稳的整盘同步命令(在旧机器上以 root 执行,把根目录推到新机器):
rsync -avzHSAXP --numeric-ids --delete --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/boot --exclude=/etc/fstab --exclude=/lib/modules -e "ssh -p 22" / root@NEW-SERVER-IP:/几个关键点:--numeric-ids 保留原始 uid/gid,避免新机器用户编号对不上;--exclude 把 /proc、/sys、/dev 这些虚拟文件系统排除,别把它们当真文件拷;--delete 让目标与源保持一致(删掉源已删的)。强烈建议先加 --dry-run 空跑一遍看会不会报错,正式跑至少两次——第一次传基础,第二次追平期间变化的文件,最后停机切的那次差异最小。
还有个提速细节:如果新老机器同属一家商家、且机房间提供内网 IP,优先走内网同步,速度能跑满且不计公网流量;跨商家只能走公网,注意有些低价 VPS 会限制单连接带宽,必要时用 --bwlimit 自己控速,别把整台机器带宽打满影响线上服务。
如果你的服务是容器化(Docker),其实没必要整盘拷,只同步 /opt/stacks 这类数据目录 + compose 文件即可,干净又小。新机器装好 Docker 直接 up 起来。这也是为什么现在都推荐"应用容器化、数据可备份"的架构——搬家从大半天变几分钟。
三、数据库导出与导入
数据库绝对不能简单 scp 数据目录,必须 dump 成 SQL 再导入,否则字符集/权限一乱就崩。MySQL/MariaDB:
mysqldump -u root -p --single-transaction --routines --triggers --all-databases > alldb.sql--single-transaction 对 InnoDB 做一致性快照、不锁表;--routines --triggers 把存储过程和触发器也带上;--all-databases 一把全导出。传到新机器后导入:
mysql -u root -p < alldb.sqlPostgreSQL 用 pg_dump(自定义格式更稳):
pg_dump -U postgres -F c -b -v -f mydb.dump mydb
pg_restore -U postgres -d mydb -v mydb.dump大库导出时建议先停掉写入(或锁库)做最后一次备份,保证还原出的是"完整一刻",而不是半成品。导入完用 mysqlshow 或连一下库确认表都在。
四、DNS 先降 TTL 再切换
切换流量全靠改 DNS 的 A/AAAA 记录。TTL(生存时间)决定旧解析在全球生效多久。搬家前 24–48 小时,把域名 TTL 调到最小(常见 300 秒,甚至 60 秒)。这样切到新 IP 后,最坏也只影响几分钟,用户很快就被导到新机器。别忘了:Cloudflare 用户注意橙色云朵下改的是 Cloudflare 侧的记录;如果用商家 DNS,去对应控制台改。
正式切换时:先确认新机器服务已起、数据库已还原、证书就位,再把 A 记录指向新 IP。切完后旧机器先别急着删,留着当"回滚备胎"。
五、切换后验证
- 证书:HTTPS 访问返回锁标,curl -I https://域名 看 200 与证书有效期。Let's Encrypt 证书目录若一并备份还原,新机直接复用,省去重新校验;否则用 DNS 校验方式重新签。
- 邮件:如果你在 VPS 上自建邮件,换 IP 后新 IP 可能进了黑名单,或被 Gmail/Outlook 暂时判垃圾。检查 SPF、DKIM、DMARC、以及 rDNS(PTR)记录是否指向你的域名;新 IP 建议"预热"几天再大量发信。
- API 与第三方:支付网关、Google/Microsoft API、对象存储、防火墙白名单里若写死了旧 IP,逐个更新;否则会出现"本地能通、线上 403"的诡异问题。
- 功能冒烟:登录、提交表单、上传下载、定时任务,走一遍核心流程。
六、回滚预案
再顺的迁移也可能翻车,所以必须预留回头路:
- 旧机器别删:切换后至少保留旧 VPS 一周,出问题把 DNS A 记录指回旧 IP(TTL 已调小,几分钟生效)即可回滚。
- 快照/备份常备:动手前给旧机器做全量备份或商家快照;新机器起好后也存一份,防止还原出错。
- 数据库双写/只读窗口:切的那一刻先停旧机写入(或设只读),等 DNS 完全切走再放开,避免两边数据分叉。
- 监控兜底:用 UptimeRobot 之类盯着新域名,一旦 5xx 飙高马上回滚并排查。
七、换 IP 的连锁影响
换机器 = 换 IP,而 IP 不是孤立的,它牵一发动全身:
- 邮件信誉:新 IP 没有历史信誉,大厂邮箱可能先当垃圾甚至拒收。提前查 blacklist(mxtoolbox、multirbl),配好 SPF/DKIM/DMARC 与 PTR,必要时联系 Microsoft 等解除封锁;低频自用一般几天就稳。
- 第三方白名单:API 服务商、企业防火墙、Github Actions 自托管 runner、内部 VPN 的允许列表,凡是按 IP 放行的都要改。
- fail2ban / iptables:旧机器上基于 IP 的封禁规则和白名单,到新机器若直接拷过去,可能把错误的 IP 永久封了,搬完过一遍。
- Let's Encrypt 限频:频繁换 IP 重签证书可能触发速率限制,尽量用 DNS 校验(acme.sh / certbot --dns)而不是 HTTP 校验,避免依赖临时可达的 IP。
- 监控与告警:Prometheus、Grafana、ServerStatus 里写死的旧 IP 要更新,否则图表全空、告警误报。
以 RackNerd、CloudCone、Vultr、Bandwagon 为例:Vultr 按时计费、全球机房多,最适合开一台最小实例当"演练机",流程跑通再正式切;CloudCone 支持快照,迁移前后都能存盘;RackNerd 年付便宜适合做长期新家;Bandwagon(搬瓦工)CN2 GIA 国内访问友好,适合对国内速度有要求的站点。小建议:正式搬前,先用新商家开最小实例把整套流程跑一遍当演练,确认备份还原没问题,再动真格,心里最踏实。
八、两种更省力的传输法
除了整盘 rsync,两种场景有更优解:
- 超大目录用 tar 管道:如果单目录特别大(比如几百 GB 的附件库),先 tar 再通过网络传,比上万小文件逐个 rsync 更快。可以用 pigz 多线程压缩后边打边传:
tar -cf - /data | pigz -c | ssh root@新IP 'pigz -dc | tar -xf - -C /'。一边压缩一边传,省时间也省流量。 - 容器卷直接同步:Docker 用户只需 rsync 数据卷目录(如 /var/lib/docker/volumes 或你的 bind mount 目录),compose 文件用 git 管理,新机 docker compose up 即可。比拷整个系统干净太多,也最不容易漏。
无论哪种,第一次传完别急着切,等低峰期再跑一次增量,把停机窗口压到最小。
九、迁移当日 checklist(照着打钩)
- ✅ 旧机已做全量备份 / 商家快照,旧 IP 关联清单列好;
- ✅ 域名 TTL 已提前降到 300 秒以内,等待生效;
- ✅ 新机系统装好、同发行版,SSH 能登、防火墙先只允许自己 IP;
- ✅ rsync 空跑无误,正式同步至少两次,最后低峰期追平增量;
- ✅ 数据库 mysqldump / pg_dump 导出并在新机导入成功,表齐全;
- ✅ 证书备份还原或重新签发,curl 验证返回 200 与有效锁标;
- ✅ A 记录切到新 IP,旧机保留,观察监控无 5xx 再考虑下线;
- ✅ 邮件 SPF/DKIM/DMARC/PTR 复查,第三方 IP 白名单逐个更新。
照着这份清单走,绝大多数是"备份 → 同步 → 导库 → 切 DNS → 验证"五步,熟练之后一两个小时就能无痛换窝。便宜 VPS 的乐趣,不就在于随时说走就走、不被一家绑死吗?
💡 Read More: For deeper dives into infrastructure and architecture, visit our VPS Guide Hub for comprehensive strategies.