先判断网站属于哪一种迁移
先列出允许中断的时间、可以接受的数据恢复点,以及谁负责切换和验收。静态页面可提前完整复制;带数据库的业务需要处理最后一次备份之后的新数据;持续上传文件、运行队列的系统还要协调对象存储和后台任务。不要在一次迁移里同时升级框架、重构数据库和更换网址,变化越多越难定位故障。
| 网站类型 | 切换前的关键动作 | 主要风险 |
|---|---|---|
| 静态官网或落地页 | 校验文件、HTTPS 和所有页面路由 | 资源漏传、错误重定向 |
| 有后台和会员的网站 | 演练恢复,切换窗口暂停写入并最终同步 | 两个数据库同时接收新数据 |
| 持续上传或任务密集的系统 | 确定唯一写入端,协调上传、队列、计划任务 | 文件与数据库不一致、任务重复执行 |
迁移前,把环境和备份清单补齐
- 文件:程序、用户上传、环境配置、计划任务、服务启动配置和依赖锁文件。备份中有凭据时应限制访问,公开验收报告不要附带原始配置。
- 数据库:记录版本、字符集、时区、存储引擎和扩展;确认视图、触发器、存储过程是否需要一起迁移。
- 运行环境:检查 PHP 版本与扩展、PHP-FPM 的 socket 或端口、Node/Python 依赖、目录所有者和可写目录。
- 入口:保存 DNS 记录、Nginx 站点配置、证书链与续期方式、CDN 回源设置。域名不变时通常不需要修改正式 URL。
- 业务依赖:记录缓存、会话、邮件、第三方 API 回调和来源地址白名单,不在表格中明文记录密钥。
备份存在不等于能够恢复。先在隔离环境恢复一次,检查主要表的数据量和抽样业务记录。MySQL 的 --single-transaction 适用于 InnoDB 等事务表的一致性导出,不能据此假设所有表都获得相同保证;导出期间的结构变更也需要控制。具体行为应按正在使用的版本核对。MySQL 官方备份说明
先验证新服务器,再修改 DNS
在新环境安装与旧站匹配的运行时,恢复文件和数据库,调整配置中的内部连接地址。测试前让新环境的定时任务、通知发送和队列消费者保持暂停,防止与旧站重复处理同一业务。证书必须覆盖正式域名,不能把忽略证书错误当成通过验收。
下面是 Linux/macOS 终端的只读检查示例。example.com 是示例域名,origin-new.example.net 代表你控制的新服务器测试域名。替换后,curl 会连接新目标,同时按正式域名进行 HTTPS 请求;不需要先修改访客的 DNS。
nginx -t
curl --connect-to example.com:443:origin-new.example.net:443 \
-sS -D - -o /dev/null https://example.com/
nginx -t 会检查配置语法并尝试打开引用的文件;通过之后仍要实测页面和上游服务。curl 的 --connect-to 只改变连接目标,适合这种切换前验证。Nginx 参数说明、curl 官方手册
至少测试:首页、深层服务页、静态资源、真实 404、登录、退出、表单提交、文件上传和后台读取。仅看到首页正常,无法发现 PHP-FPM 连接错误、会话失效或上传目录权限问题。
切换窗口:始终保持一个明确的数据写入端
- 提前准备 DNS:如需降低 TTL,应在旧 TTL 到期前预留时间;修改 TTL 不会立即清空各地已有缓存。
- 冻结变更:暂停发布和数据库结构变更,记录切换时间。需要短暂停机的业务进入维护或只读状态。
- 完成最后一次同步:同步新增文件和数据库增量,核对关键记录;采用复制方案时先确认延迟和一致性。
- 切换入口:更新 DNS 或负载均衡/CDN 回源,确认 A 与 AAAA 记录不会分别指向两个未同步环境。
- 恢复单端写入:只在选定的新环境恢复计划任务与队列,确认回调接收端和通知不会重复执行。
- 持续观察:旧服务器保留足够观察时间,检查新旧访问日志、错误率、写入量和队列积压,确认流量迁移情况。
DNS 缓存意味着部分访客可能暂时到达旧服务器。旧站必须按预先设计维持只读、维护提示或代理到新的写入端。没有数据库同步机制时,不能让新旧两端都继续接受订单和上传,再寄希望于之后自动合并。
回滚需要先处理新产生的数据
在新站开始写入之前,切回旧入口相对简单;新站产生订单、会员或上传后,直接改回 DNS 可能丢失这部分记录。回滚计划应写清停止写入、导出新增数据、校验并恢复唯一写入端的顺序。回滚不是删除新服务器,也不是把旧备份无条件覆盖回去。
| 迁移后现象 | 先检查 | 处理方向 |
|---|---|---|
| 静态页面正常,后台 502 | PHP-FPM 状态、socket、Nginx 上游地址 | 修正运行环境连接,查看应用日志 |
| 新上传图片只有部分访客能看见 | DNS 指向、文件同步、存储 URL | 确认唯一写入端和共享文件来源 |
| 登录反复失效 | 会话存储、Cookie 域、HTTPS、系统时间 | 统一会话与入口配置 |
| 修改内容后仍显示旧页面 | 浏览器、应用、CDN 缓存层 | 按版本或 URL 定向刷新,避免误删业务数据 |
上线验收与需要专业协助的情况
验收表应记录页面状态码、HTTPS、重定向、数据抽查、上传下载、后台任务、证书续期、备份任务和告警接收。关注业务实际是否成功,不能仅用服务器 CPU 正常或首页返回 200 作为结论。若 URL 也发生改变,再单独验证一对一 301、Canonical、内链和 sitemap。
涉及持续交易、较大数据库、多个应用、共享存储或明确停机约束时,适合先做迁移演练。服务器迁移与部署服务可以围绕现有环境、数据规模、切换窗口和验收标准评估实施范围;具体工期与费用按实际复杂度确认,不承诺所有系统都能零停机。
网站迁移常见问题
网站迁移必须换域名吗?
不必。保持域名和页面地址不变,只切换服务器入口即可。需要同步检查证书、DNS、CDN 回源与应用内部配置。
用面板的一键迁移后,还需要检查什么?
检查数据库完整性、运行时版本、计划任务、上传文件、缓存、证书续期和第三方回调。面板完成复制不等于业务验收完成。
旧服务器什么时候可以关闭?
在 DNS 传播、关键业务验收、备份恢复与观察期都通过之后,再按回滚计划退役;持续时间应结合原 TTL、访问日志和业务周期确定。
参考与核对依据
实施记录:本站建设与技术SEO改造案例(自有项目)。
