海外 VPS 迁移保证业务不中断的核心方案是采用增量数据同步配合 DNS 平滑切换,适用场景为拥有独立域名且可控制 DNS 解析的业务,风险边界在于数据库写入一致性和本地 DNS 缓存。
先说结论:通过 rsync 增量同步数据并提前降低 DNS TTL 值,可在分钟级内完成切换,最大程度减少停机时间。
- 适合:拥有域名管理权限、业务支持短暂只读或停服的 Linux 服务器迁移。
- 先准备:提前 24 小时调整 DNS TTL,测试新服务器网络连通性和环境一致性。
- 验收:切换后验证端口连通性、业务日志无报错、数据库读写正常。
命令速用版
数据同步常用 rsync 命令,支持断点续传和权限保留,适合大文件迁移。
rsync -avz `--delete` -e ssh /source/path/ user@new_server_ip:/dest/path/
DNS 查询验证使用 dig 命令,确认解析是否生效。
dig @8.8.8.8 yourdomain.com
为什么会这样
业务中断主要由数据不一致和 DNS 传播延迟导致。旧服务器停止服务后,若新服务器数据未同步最新写入,会导致用户数据丢失;DNS 记录未全局生效前,部分用户仍访问旧 IP,造成连接拒绝。
分步处理
第一步调整 DNS TTL,登录域名管理后台,将 A 记录 TTL 值改为 60 秒,需提前至少 24 小时操作以确保全球 DNS 缓存过期。
第二步全量同步数据,在业务低峰期执行首次 rsync,将代码、配置文件和静态资源同步到新服务器,注意排除日志和缓存目录。
第三步停止旧服务并增量同步,停止旧服务器 Web 和数据库服务防止新写入,再次执行 rsync 同步差异数据,确保数据静止。
第四步切换 DNS 解析,将域名 A 记录指向新服务器 IP,此时旧服务器应保持关机或防火墙拦截以避免脑裂。
第五步启动新服务,在新服务器上启动 Web 和数据库服务,检查监听端口是否正常。
怎么验证是否生效
使用 curl 命令检查 HTTP 状态码,确认新服务器返回 200 状态且内容正确。
查看业务应用日志,确认无数据库连接错误或文件权限报错。
通过多地 ping 测试或 dns propagation 工具,确认全球 DNS 解析已指向新 IP。
常见坑
数据库迁移容易忽略主从同步延迟,直接拷贝数据文件可能导致损坏,建议通过 mysqldump 或主从复制同步。
文件权限丢失会导致服务启动失败,rsync 必须带 -p -o -g 参数保留属主和权限。
本地 DNS 缓存会影响验证结果,验证时需修改本地 hosts 文件或刷新 DNS 缓存。
常见问题
迁移过程中需要停机多久
取决于最后一次增量同步的数据量和数据库停止写入的时间,通常控制在分钟级。
数据库如何保证数据不丢失
先停止写入服务,导出完整 SQL 文件导入新库,或配置主从复制直到切换时刻。
切换后发现错误如何回滚
将 DNS 解析改回旧服务器 IP,并确保旧服务器数据未被覆盖,可立即恢复业务。