网站迁移服务器怎么做?避免停机和数据丢失的完整流程

网站迁移服务器需要先复制环境与数据,在不切换域名的情况下验证新站,再安排写入暂停或数据同步,最后切换流量并持续核对业务。真正需要控制的是切换期间的数据差异、访问中断和回滚风险。静态官网与持续产生订单、会员、上传文件的系统应采用不同方案,不能只复制网站目录就认为迁移完成。

先判断网站属于哪一种迁移

先列出允许中断的时间、可以接受的数据恢复点,以及谁负责切换和验收。静态页面可提前完整复制;带数据库的业务需要处理最后一次备份之后的新数据;持续上传文件、运行队列的系统还要协调对象存储和后台任务。不要在一次迁移里同时升级框架、重构数据库和更换网址,变化越多越难定位故障。

网站类型切换前的关键动作主要风险
静态官网或落地页校验文件、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 连接错误、会话失效或上传目录权限问题。

切换窗口:始终保持一个明确的数据写入端

  1. 提前准备 DNS:如需降低 TTL,应在旧 TTL 到期前预留时间;修改 TTL 不会立即清空各地已有缓存。
  2. 冻结变更:暂停发布和数据库结构变更,记录切换时间。需要短暂停机的业务进入维护或只读状态。
  3. 完成最后一次同步:同步新增文件和数据库增量,核对关键记录;采用复制方案时先确认延迟和一致性。
  4. 切换入口:更新 DNS 或负载均衡/CDN 回源,确认 A 与 AAAA 记录不会分别指向两个未同步环境。
  5. 恢复单端写入:只在选定的新环境恢复计划任务与队列,确认回调接收端和通知不会重复执行。
  6. 持续观察:旧服务器保留足够观察时间,检查新旧访问日志、错误率、写入量和队列积压,确认流量迁移情况。

DNS 缓存意味着部分访客可能暂时到达旧服务器。旧站必须按预先设计维持只读、维护提示或代理到新的写入端。没有数据库同步机制时,不能让新旧两端都继续接受订单和上传,再寄希望于之后自动合并。

回滚需要先处理新产生的数据

在新站开始写入之前,切回旧入口相对简单;新站产生订单、会员或上传后,直接改回 DNS 可能丢失这部分记录。回滚计划应写清停止写入、导出新增数据、校验并恢复唯一写入端的顺序。回滚不是删除新服务器,也不是把旧备份无条件覆盖回去。

迁移后现象先检查处理方向
静态页面正常,后台 502PHP-FPM 状态、socket、Nginx 上游地址修正运行环境连接,查看应用日志
新上传图片只有部分访客能看见DNS 指向、文件同步、存储 URL确认唯一写入端和共享文件来源
登录反复失效会话存储、Cookie 域、HTTPS、系统时间统一会话与入口配置
修改内容后仍显示旧页面浏览器、应用、CDN 缓存层按版本或 URL 定向刷新,避免误删业务数据

上线验收与需要专业协助的情况

验收表应记录页面状态码、HTTPS、重定向、数据抽查、上传下载、后台任务、证书续期、备份任务和告警接收。关注业务实际是否成功,不能仅用服务器 CPU 正常或首页返回 200 作为结论。若 URL 也发生改变,再单独验证一对一 301、Canonical、内链和 sitemap。

涉及持续交易、较大数据库、多个应用、共享存储或明确停机约束时,适合先做迁移演练。服务器迁移与部署服务可以围绕现有环境、数据规模、切换窗口和验收标准评估实施范围;具体工期与费用按实际复杂度确认,不承诺所有系统都能零停机。

网站迁移常见问题

网站迁移必须换域名吗?

不必。保持域名和页面地址不变,只切换服务器入口即可。需要同步检查证书、DNS、CDN 回源与应用内部配置。

用面板的一键迁移后,还需要检查什么?

检查数据库完整性、运行时版本、计划任务、上传文件、缓存、证书续期和第三方回调。面板完成复制不等于业务验收完成。

旧服务器什么时候可以关闭?

在 DNS 传播、关键业务验收、备份恢复与观察期都通过之后,再按回滚计划退役;持续时间应结合原 TTL、访问日志和业务周期确定。

参考与核对依据

实施记录:本站建设与技术SEO改造案例(自有项目)。

把下一步说清楚。

带上现状、目标与需要解决的问题,先确认实施范围和验收方式。