迁移的真实顺序
迁移很少败在技术上,多半败在顺序上。切换之后才去调低 TTL,邮箱还没建好就改了 MX,日志还没看过就退掉了旧合同——每一次这样的次序颠倒,都要花掉半天。下面是完整的顺序,从第一次盘点到最后的退订。
这里按天标注的节点,适用于一个普通的网站或服务器。旺季中的网店,或者几十个邮箱的规模,需要把这些步骤拉长,而不是跳过其中任何一步。
- D-7 — 盘点真正在跑的东西。有哪些站点和域名,正在用的 PHP 版本,数据库及其引擎,邮箱及其体积,计划任务,证书及到期日期,以及所有知道您当前 IP 地址的第三方(支付网关、SMTP 中继、webhook)。最后收尾核对时依据的是这张清单,不是您的记忆。
- D-7 — 按真实用量选目标配置,而不是照着您今天在付钱的那个套餐。量一下实际占用的磁盘空间、数据库大小、真正吃掉的内存。一个 6 GB 就装得下的网站,不需要 200 GB 的套餐,只因为旧套餐标的是这个数。
- D-5 — 开通新托管并把副本建起来。文件和数据库先完整搬一遍,对外什么都不变。这份副本不必精确到秒:它的作用是证明程序能跑起来。
- D-3 — 冻结旧服务器上的改动。在切换之前不再发文章、不再更新插件、不再改主题。在这个时间点之后写进去的东西,都得手工再同步一次。
- D-2 — 把要变更的记录的 TTL 调低到 300 秒。这一步要在切换至少 48 小时之前做,原因见下面的 DNS 一节。这是最常被拖晚的一步,也是唯一补不回来的一步。
- D-1 — 用真实域名测试这份副本,同时不碰公开 DNS:改一下自己电脑上的
hosts文件,把域名指向新的 IP 地址。您这时看到的,正是访客将会看到的,包括绝对链接和各种跳转。 - D-1 — 把目标 DNS 区域准备好但不发布。把要设置的 A、AAAA、MX、SPF、DKIM、DMARC 和 CAA 记录的准确取值写下来。提前写好,就不必在切换当天现编——那时网站已经搬到一半了。
- 切换日 — 同步增量。第二遍复制只搬 D-5 之后有变化的部分,再用一份新导出的数据库替换之前那份。真正的不可用窗口,就由这短短的第二遍决定。
- 切换日 — 发布新的 DNS 记录。由于两天前就把 TTL 设成了 300 秒,对大多数访客而言切换在几分钟内生效,而不是二十四小时。
- 切换日 — 按下面给出的顺序逐条检查。不要凭记忆打勾:把清单打开,真的去测。
- D+1 — 把 TTL 调回平时的取值;多数情况下 3600 秒合适。长期把 TTL 设得很短,只会白白增加对您域名服务器的查询量。
- D+7 — 退掉旧合同,不要更早。先等到新邮箱收到过邮件、在新主机商这边恢复过一次备份、并且把错误日志看过一遍。退订往往当天就把数据删掉。