互联网教程

换服务器怎么做到不中断

换服务器的中断时间取决于三件事:TTL 有没有提前降、数据有没有同步、切换有没有回退方案。做好这三点,用户几乎感知不到。

发布者:黔序科技依据官方文档核验:2026 年 11 月

核心结论

  • 提前一天把 TTL 降到 60 秒
  • 新机先跑通再用 hosts 验证
  • 切换窗口停写几分钟,避免数据分叉

一句话:不中断的本质是「新机已经能完整服务,只差一个指向」。所有准备工作都在切换前完成,切换本身只改一次解析。

准备阶段(切换前 1~3 天)

  1. 新机建环境版本与旧机一致,装好证书、配好 nginx、导入数据库。
  2. 同步数据先做一次全量导入,切换前再做一次增量同步。
  3. 改 hosts 验证在自己电脑上把域名指向新机 IP,完整走一遍主流程。
  4. 降 TTL把 A 记录的 TTL 调到 60 秒,等旧 TTL 过期(通常几小时)。

切换阶段

  1. 停写把应用切到维护模式或设数据库只读,持续几分钟。
  2. 最后一次同步把增量数据补到新机,核对行数与最新记录。
  3. 改解析把 A 记录指向新机 IP。
  4. 验证用公共 DNS 查确认新 IP,访问主流程、支付回调、上传下载。
  5. 恢复写入确认无误后关掉维护模式。

注意:不停写直接切,会出现「切换那几分钟的订单只在旧库」的数据分叉。这类差异往往几天后才被发现,对账时非常难查。宁可停写五分钟。

切换后的观察期

  • 旧机保留 3~7 天,别立刻释放,作为回退路径。
  • 关掉旧机的定时任务释与队列消费者,避免两边同时跑。
  • 监控新机的错误率、响应时间、资源占用。
  • 确认支付、短信等第三方回调已指向新机(若按 IP 白名单,要更新白名单)。

回退条件

提前写清什么情况回退:核心接口释错误率超过阈值、支付不可用、数据不一致。回退动作就是把解析改回旧 IP,TTL 已降到 60 秒,几分钟内生效。

资料来源

  • DNS 规范:TTL 与缓存释过期机制。
  • nginx 文档:站点迁移与证书配置。
  • MySQL释 文档:主从同步与一致性校验工具。

常见问题

不降 TTL 直接切会怎样?

旧记录会在各级 DNS 缓存里继续存在,最长可能持续原来的 TTL 时长。这段时间一部分用户访问旧机,一部分访问新机,数据会分叉。

能不能用双写过渡?

可以,但复杂度高,需要处理冲突与顺序。多数企业站的量级,停写几分钟更简单可靠。

切换后部分用户还是旧页面?

DNS 缓存未过期,或 CDN 缓存未刷新。等 TTL 到期并刷新 CDN,同时确认旧机没有被继续回源。

相关阅读