外观
站点迁移操作说明:打包、传输、切换解析与回滚步骤
约 959 字
迁移回滚步骤
本说明描述把站点从旧服务器整体迁到新服务器的步骤:先打包并校验完整性,再传输与部署到新环境,最后切换解析并保留可回滚窗口。整个过程以“新环境验证通过后再切流量”为原则。
一、适用范围
- 适用:单机部署的站点,数据由数据库加文件目录组成;新旧服务器均为 Debian 或 Ubuntu;可在低峰时段安排 30 至 60 分钟窗口;域名解析可自行修改。
- 不适用:跨云厂商且必须保留原公网 IP 的场景;数据库主从在线迁移;无法停机且要求零丢请求的业务。
二、准备工作
| 项目 | 要求 | 检查方法 |
|---|---|---|
| 新服务器 | 已完成初始化与基础软件安装 | ssh deploy@203.0.113.10 可登录 |
| 磁盘空间 | 新机可用空间 ≥ 源数据 2 倍 | df -h /srv |
| 数据库版本 | 新旧一致或向下兼容 | mysql -e "SELECT VERSION();" |
| 解析权限 | 可改 A 记录且 TTL 已降至 600 | 控制台记录列表中 TTL 为 600 |
| 备份 | 迁移前已完成一次全量备份 | 备份文件校验通过 |
| 通知 | 相关方已知切换窗口 | 窗口前 24 小时完成通知 |
注意事项:
- 切换前 24 小时把 TTL 降到 600,否则回滚必须等原 TTL 过期才能生效。
- 旧环境在切换后至少保留 7 天,确认无遗漏再下线。
三、操作步骤
本节拆成三个子步骤,建议按顺序执行;每一步完成后先确认结果,再进入下一步。
3.1 打包与完整性校验
停机后导出数据库与文件,并生成可复核的校验清单。详见 3.1 打包与完整性校验。
3.2 传输与新环境部署
用 rsync 传输并校验,在新机解包、导库、启动服务。详见 3.2 传输与新环境部署。
3.3 切换解析与回滚
切换 A 记录并验证,同时准备可在 2 倍 TTL 内完成的回滚。详见 3.3 切换解析与回滚。
四、验证方法
- 源端执行
sha256sum -c manifest-202606080900.sha256,预期全部 OK。 - 新机解包后执行
du -sh /srv/axis/www,与源端差异在 5% 以内。 - 用 Host 头直连新机:
curl -sSI -H 'Host: example.com' http://203.0.113.10/,预期返回 200。 - 切换后执行
dig +short example.com,预期返回新 IP,且页面内容与验证环境一致。
五、常见问题
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 解包后权限异常 | tar 未保留属主,或跨用户解包 | 以 root 执行 tar -xp,解包后统一 chown |
| 新机返回 502 | 后端未启动,或配置仍指向旧库 | 检查服务状态与连接串 |
| 切换后部分用户仍访问旧站 | 原 TTL 未过期或本地 DNS 缓存 | 等待 TTL 过期,必要时刷新 CDN 与本地缓存 |
| 数据库导入报错 | 版本差异或字符集不一致 | 统一版本与 utf8mb4 后重新导入 |
| 回滚后数据不一致 | 切换后新环境已写入,旧环境数据已过期 | 回滚前停止新环境写入,避免双写 |
六、回滚与注意事项
- 回滚:把 A 记录改回旧 IP,TTL 保持 600,等待生效后按验证方法逐条确认;旧环境保持运行且配置不变。
- 注意:切换期间不要在新旧环境同时写入同一数据库,会造成数据分叉且难以合并。
- 注意:迁移完成后更新监控对象、备份任务与证书续期三处配置,避免新机成为监控盲区。