网站搬家 不停机迁移完整指南:域名解析切换期间保持可访问

很多站长一提网站搬家就紧张:域名解析一切换,访客可能半天打不开页面,搜索引擎排名也会波动。这篇文章就是为解决这个问题而写——网站搬家完全可以做到访客无感知。我们会按”准备 → 同步 → 切换 → 验证”的顺序,教你如何通过提前降低 TTL(DNS 记录的缓存存活时间)、新旧服务器并行运行和分步验证,把解析切换期间的访问中断风险降到接近零。

网站搬家不停机迁移封面图

一、先理解为什么会停机:DNS 缓存是根源

要知道如何避免停机,得先明白停机是怎么发生的。当访客访问你的域名时,本地 DNS(域名解析服务)会把域名翻译成服务器 IP,并且把这个结果缓存起来,缓存时长就是 TTL。比如 TTL 设了 86400 秒(24 小时),那么已经解析过你域名的访客,在这 24 小时内都会继续拿旧 IP。

问题就出在这里:如果你先把旧服务器关掉、再改解析,那些还缓存着旧 IP 的访客会被指向一台已经不存在的服务器,页面直接超时——这就是停机。换句话说,停机不是解析切换本身造成的,而是”旧服务器下线早于缓存过期”这个顺序错误造成的。

所以不停机迁移的核心思路只有一句话:让旧服务器一直活到所有 DNS 缓存自然过期为止。整个迁移流程都围绕这一点展开。如果你打算把网站搬到新的云服务器(由虚拟化技术从集群资源中切出的弹性主机),可以提前参考这篇云服务器购买避坑指南把环境选对,避免迁移完才发现配置不合适。

二、迁移前 48 小时:降低 TTL 并准备新环境

解析切换前 48 小时,要做两件事:降低 TTL,以及把新服务器环境完全搭好。

第一步是改 TTL。进入域名解析控制台,把 A 记录的 TTL 从默认值(常见为 3600 或 86400 秒)降到 300 秒(5 分钟)。这样解析变更发布后,全网缓存最多 5 分钟就会刷新,切换窗口从”一天”缩短到”几分钟”。改动后等待一个旧 TTL 周期(比如原来是 1 小时就等 1 小时),确保全网缓存的都已经是短 TTL 版本。第二步是搭新环境:在新服务器上安装与旧站一致或兼容的运行环境,PHP 版本、数据库版本尽量对齐,避免迁移后出现兼容性报错。环境就绪后,先用临时域名或本地 hosts 绑定新 IP 做一轮完整测试,确认页面、后台、支付回调都能正常工作。

这里有一个容易漏掉的细节:邮件服务的 MX 记录也要一并检查。如果企业邮箱和网站共用一个域名,迁移时 MX 记录的 TTL 同样要降低,否则网站切换成功了、邮件却断了几天。关于解析记录的完整分类,可以延伸阅读这份邮箱域名 SPF/DKIM/DMARC 配置指南。

三、数据同步:让新旧服务器内容一致

环境就绪后,把网站数据完整搬到新服务器。同步分两部分:文件和数据库。

文件用 rsync 增量同步最稳妥,第一次全量,之后定时增量,把改动只传差异部分:

rsync -avz --delete /var/www/old-site/ root@新服务器IP:/var/www/new-site/

数据库用 mysqldump 导出再导入,切换前最后一次同步建议安排在流量最低的时段(通常是凌晨):

mysqldump -u root -p --single-transaction dbname > dump.sql
mysql -u root -p dbname < dump.sql

--single-transaction 参数能在不锁表的情况下保证导出数据的一致性,这对正在营业的商城类网站尤其重要。同步完成后,在新服务器上把数据库配置文件中的连接地址、账号密码核对一遍,并用临时域名完整点一遍核心页面:首页、产品页、购物车、表单提交。任何一步在新环境上没验证过,都不要进入下一步的解析切换。

迁移流程四阶段示意图

四、解析切换:窗口最短的一步

前面所有准备都完成后,解析切换本身反而是最简单的一步:在 DNS 控制台把 A 记录的值从旧 IP 改成新 IP,保存即可。因为 TTL 已经提前降到 300 秒,大部分访客会在 5 分钟内陆续解析到新服务器。

切换期间的关键是”新旧并行”:旧服务器保持正常运行,不要停机也不要清空数据。因为 DNS 过渡期内,一部分访客拿到的还是旧 IP,他们会被旧服务器继续服务;另一部分访客已经拿到新 IP,由新服务器服务。只要两边内容一致(第三步已保证),访客完全感知不到背后发生了什么。

DNS 解析切换过渡期示意图

有两个配套动作建议同时做。一是切换前把新服务器上网站的缓存插件或 CDN(内容分发网络)缓存预热一遍,避免切换瞬间大量请求穿透到动态页面拖慢响应;二是如果你的站点前面挂了 CDN,除了改 DNS 还要在 CDN 控制台把回源地址改成新 IP,否则会出现”CDN 正常、回源失败”的隐蔽故障。验证解析是否生效可以用:

dig +short 你的域名 @8.8.8.8

返回新 IP 就说明对应节点已经切换完成。不同地区的解析节点刷新有先后,通常几小时内全网完成。

五、收尾验证与旧服务器下线标准

解析切换完成不等于迁移完成,收尾验证和下线时机的判断同样重要。验证清单按顺序过一遍:前台页面正常打开;后台可以登录、可以发布内容;表单提交能收到通知邮件;HTTPS(安全传输协议)证书在新服务器上生效、无浏览器告警;用 curl -I https://你的域名 确认响应状态码是 200。

旧服务器的下线不要抢时间。建议保留至少 72 小时,期间观察新服务器日志,确认回源流量、爬虫抓取都已迁移到新 IP,再执行下线。如果条件允许,把旧服务器临时改成 301 跳转到新地址作为双保险,能兜住极少数仍持有旧 IP 缓存的访客。确认全网解析稳定后,再降低新记录维护成本——把 TTL 恢复到正常值(比如 3600 秒),平时保留过短的 TTL 会增加解析查询次数,反而拖慢首次访问。

带宽(单位时间内可传输的数据量)不足也是迁移后常见的新问题:新服务器如果配置比旧站低,流量切换过来后可能出现带宽跑满、页面变慢。建议切换后 48 小时内盯一下流量曲线,必要时参考这份独立服务器采购指南升级配置,别让搬家后的体验倒退。

六、常见踩坑与规避

搬家过程中几个高频问题提前规避:

  • 先关旧服务器再改解析:这是停机的头号原因,顺序必须反过来——先切解析,旧服务器等缓存过期后再下线。
  • 数据库连接信息没改:文件搬过去了,但 wp-config.php 之类的配置还指向旧库或旧密码,前台直接报数据库连接错误。
  • 忘记同步 .htaccess 与伪静态规则:Nginx 用户还要转换 rewrite 规则,否则内页大面积 404。
  • HTTPS 证书没部署:解析切过去浏览器提示不安全,转化率直接跳水,证书要在切换前装好。

七、总结与下一步建议

核心结论是:网站搬家不停机的本质是”顺序管理”——提前降 TTL、数据完整同步、解析切换时新旧并行、旧服务器最后下线。四步按序执行,切换窗口可以压缩到几分钟,访客全程无感知。我们建议的做法是把切换安排在流量最低的时段,并提前把第五节的验证清单准备好,切换当天照单执行即可。

如果你需要一个迁移协助更省心的环境,可以考虑 Hostease 的虚拟主机或 VPS(虚拟专用服务器,一台物理机划分出的独立资源单元):支持中文工单协助迁移,技术团队可以帮你核对解析与证书配置。更多与解析相关的基础概念,也可以参考这篇CDN 回源与解析配置指南补充背景知识。

发表评论