迁移主机时,真正容易拖长停机的往往不是复制文件,而是漏掉定时任务、证书、邮件发送或外部接口等依赖。业务迁移到新主机的停机风险控制,关键是把准备工作前移:先验证新环境,再缩短最终数据同步和切换流量的窗口。
先明确哪些部分会中断
列出网站或应用涉及的服务:Web 服务、数据库、文件存储、DNS、TLS 证书、后台任务和监控告警。逐项记录当前配置、数据来源、负责人及恢复方式。常见遗漏包括新主机未放行必要端口、定时任务仍在旧机运行,以及上传文件只复制了迁移前的版本。
再区分可并行准备的工作和必须暂停写入的工作。安装软件、调整配置、导入历史数据通常可以提前完成;最后一轮增量同步、数据库只读和 DNS 切换,则应安排在业务较低峰时段。不同系统的写入量、数据规模和 DNS 缓存都会影响停机时间,不宜只按文件总量估算。
按顺序迁移,减少切换窗口
- 盘点与备份:记录运行版本、服务端口、环境变量、证书位置、数据目录和定时任务。对数据库及关键文件做可恢复的备份,并实际检查备份是否可读取。
- 搭建新主机:安装所需运行环境,配置防火墙、服务启动项和监控。将网站或应用部署到新环境,但先不接收正式写入。
- 预先复制数据:历史文件可使用 rsync 等工具分批传输;数据库可先导入备份,再按所用数据库支持的方式持续同步变更。复制结束后检查文件数量、关键文件校验值,以及数据库表和业务记录。
- 预演访问:通过本机 hosts 配置或临时测试域名访问新主机,检查登录、搜索、上传、表单提交和后台任务。使用 Nginx 等 Web 服务时,也要验证站点配置、证书和反向代理目标。
- 安排正式切换:提前通知相关人员并暂停会写入数据的操作。完成最后一次增量同步后,把旧环境设为只读或停止写入,再切换 DNS 或负载均衡流量;随后检查首页、核心功能、日志和错误率。
- 观察并决定是否回退:保留旧主机及数据,不要切换后立刻清理。若新环境持续报错、数据不一致或核心操作无法完成,按预案将流量切回旧主机,并明确由哪一端继续接受写入。
切换前后最容易踩的坑
DNS 并不等于即时生效
如果通过 DNS 指向新主机,可在迁移前降低 TTL,例如提前一至两天调整为几分钟级;但部分递归解析器和客户端可能缓存更久,因此这不是即时切换的保证。确认新旧主机在过渡期都能正确处理请求,并观察不同网络下解析结果。
避免新旧两边同时写入
双机同时接收订单、表单或文件上传,可能造成数据分叉。除非架构明确支持并已验证冲突处理,否则应规定单一写入端:切换前旧机写入,最终同步后新机写入。若必须缩短只读时间,可使用数据库复制等方案,但需要预先验证延迟、故障处理和回退时的数据方向。
给回退设置明确条件
写下回退触发条件,例如核心页面无法访问、关键交易失败或数据校验不通过,并指定观察时长和决策人。切回 DNS 后,缓存仍可能让部分用户访问新主机;此时要避免两边继续各自写入,必要时暂停写入并核对数据。
把停机风险控制落实到清单
业务迁移到新主机的停机风险控制,不是追求零秒切换,而是确保停机范围可预估、关键数据可恢复、异常时有路可退。迁移前做一次完整演练,记录每一步耗时;正式窗口只执行验证过的操作,并在切换后持续检查日志、资源使用和业务功能。业务迁移到新主机的停机风险控制做得越细,越容易把问题限制在可处理的范围内。
常见问题
迁移时一定要关闭旧主机吗?
不必立即关闭。建议保留旧环境一段观察期,但要明确它是否接受写入,避免两套数据逐渐不一致。
能否完全不停机迁移?
部分架构可通过复制、流量切换等方式把中断压得很短,但是否可行取决于应用是否支持并行运行、数据同步方式及回退设计,不能仅凭主机配置判断。
迁移前要降低 DNS TTL 吗?
可以提前降低,以缩短部分用户继续访问旧地址的时间;但缓存行为不完全受 TTL 控制,还需保留过渡方案。
如何确认迁移完成?
检查域名解析、核心功能、数据库读写、文件上传、定时任务和错误日志,并确认备份及回退路径仍可用。