一句话原则:迁移不靠”快”,靠”顺序”。 先把数据完整搬到新机、验证通过,最后才切 DNS——顺序对了,全程可以做到零停机、零数据丢失;顺序错了(先关旧机再想搬家),丢数据只是时间问题。
30 秒版 SOP 总览
盘数据 → 整机备份 → 新机搭环境 → 数据恢复 → 双跑验证 → 降 TTL 切 DNS → 观察 48h → 旧机退役
5min 10min 20min 15min 10min 5min 48h 7 天后
| 阶段 | 核心动作 | 风险点 |
|---|---|---|
| 迁移前 | 数据盘点 + 全量备份 | 漏掉邮件/cron/证书 |
| 新机 | 同版本软件栈 + 数据恢复 | 版本不一致导致报错 |
| 切换 | 提前降 TTL → 改解析 | TTL 没提前降 = 切换慢 |
| 收尾 | 双跑观察后退役旧机 | 旧机退太早 = 没有后悔药 |
推荐新机(下单入口为官方推广链接,价格不变):
第 0 步:判断”该不该现在迁”(3 个信号)
✅ 该迁移的信号:
- 线路/机房不合适:晚高峰丢包持续 > 5%,换机房也不解决
- 商家不稳定:频繁宕机、工单不响应、跑路传闻出现
- 成本优化:同样配置别家价格腰斩(如年付从 $20+ 降到 $11 档)
❌ 先别迁的情况:业务正在大促/流量高峰、你只有一次备份经验——先练一次完整备份恢复再动。
第 1 步:迁移前检查清单(逐项打勾)
- ✅ 列出所有跑在旧机上的东西(网站?数据库?Docker?定时任务?邮件服务?)
- ✅ 确认所有域名和 DNS 的管理权限都在你手上
- ✅ 记录旧机软件版本:
nginx -v、php -v、mysql --version、docker -v - ✅ 通知可能受影响的用户(如有)
- ✅ 准备新机:开机 + SSH 通 + 基础安全配置
第 2 步:数据盘点(最容易漏的 6 样)
迁移失败案例里,90% 的”丢数据”不是文件传输失败,而是根本没意识到要搬:
| 项目 | 位置参考 | 说明 |
|---|---|---|
| 网站文件 | /www/wwwroot/、/var/www/ |
注意隐藏文件如 .htaccess、.well-known |
| 数据库 | MySQL/MariaDB | 用逻辑备份导出,别直接拷数据目录 |
| 定时任务 | crontab -l |
备份、爬虫、证书续期等 |
| 证书 | Let’s Encrypt/宝塔 | 可直接在新机重新签发,更干净 |
| 配置文件 | Nginx 站点配置、Docker compose | 记录所有自定义改动 |
| 第三方依赖 | 支付回调、API 白名单、CDN 回源 | 涉及 IP 的都要在切换后更新 |
第 3 步:原地全量备份(可复制命令)
# 1) 网站文件打包(按实际目录调整)
tar -czvf /root/site_files_backup.tar.gz /www/wwwroot/your-site
# 2) 数据库导出(MySQL 示例)
mysqldump -u root -p --single-transaction --routines --triggers \
your_database > /root/db_backup.sql
# 3) crontab 导出
crontab -l > /root/crontab_backup.txt
# 4) 从本地把三个备份拉到你的电脑(在本地终端执行)
scp root@旧服务器IP:/root/*backup* ./
三条铁律:
- 备份文件必须落到你的本地电脑或对象存储——只存在旧机上等于没备份
- 导出后立刻做一次”演练恢复”:本地能还原、能打开,才算数
- 迁移期间先停写再备份(维护模式下导出数据库),避免备份后又有新数据
第 4 步:新机环境搭建
原则:版本对齐旧机(PHP 7.4 的站就别上新机 PHP 8.3,先跑通再升级)。
# Ubuntu 示例:基础环境(以宝塔为例可图形化完成)
apt update && apt install -y curl
# 复用旧机同款面板最省事:宝塔重新装一遍,套件版本选择与旧机一致
- 用宝塔/aaPanel:装好同版本 Nginx/MySQL/PHP,创建好站点和数据库
- 手动环境:照着旧机版本
apt install对应组件即可
第 5 步:数据恢复
# 1) 上传备份到新机(在本地执行)
scp site_files_backup.tar.gz db_backup.sql root@新服务器IP:/root/
# 2) 解压网站文件
mkdir -p /www/wwwroot/your-site && tar -xzvf site_files_backup.tar.gz \
-C /www/wwwroot/your-site --strip-components=3
# 3) 导入数据库
mysql -u root -p your_database < /root/db_backup.sql
# 4) 恢复 crontab
crontab /root/crontab_backup.txt
WordPress 站点特别提醒:域名没变的话直接导入即可;如果顺便换域名,要用 WP-CLI 或专门的搜索替换工具处理数据库中的序列化数据,直接 SQL REPLACE 会把序列化字段改坏:
# 域名替换(在新机执行,先备份数据库)
wp search-replace 'old.com' 'new.com' --all-tables --precise
第 6 步:DNS 平滑切换(零停机关键)
提前 24~48 小时:把域名 TTL 从 3600s 降到 300s(5 分钟)
↓
新机用"hosts 绑定"或直接 IP 访问做全站验证
↓
验证全绿后:改 A 记录指向新机 IP(TTL 保持 300s)
↓
观察 24~48 小时无异常后:TTL 改回 3600s
验证技巧:本地改 hosts 文件把域名指向新机 IP,在”真实域名”下把所有功能点一遍——这样切 DNS 之前就能发现问题。
切换前必须全绿的验证清单:
- ✅ 首页/内页正常、后台能登录
- ✅ 数据库读写正常(发一条测试文章/评论)
- ✅ HTTPS 证书正常、http 自动跳 https
- ✅ 伪静态规则正常(文章 URL 不 404)
- ✅ 定时任务在跑、邮件/推送能发出
- ✅ CDN 如果启用,回源 IP 指向新机
第 7 步:旧机退役
- 保留 7~30 天:期间只读不写(不关机),有异常可快速切回
- 确认无遗漏后再终止:先取消自动续费,到期自然释放(比手动删更稳)
- 涉及邮箱/解析/DNS 白名单的,逐项解绑
常见坑清单(真实高频)
- 只备份了文件,忘了数据库——最常见,灾难级
- TTL 没提前降:切换后老 IP 还会被解析数小时,出现”一部分人能访问、一部分人访问到旧站”
- MySQL 版本跨度大:5.6 的库导入 8.0 报错,先对齐版本或升级 SQL 模式
- 序列化数据被直接替换:WordPress 换域名必须用
wp search-replace - 证书没重签/没续:新机直接用旧证书文件容易续期失败,建议新机重新申请
- 防火墙端口没放行(新机 443/80 是默认开的,但自建服务端口常忘)
- 忘了
.well-known目录(ACME 验证用)和.htaccess等隐藏文件
常见问题(FAQ)
Q1:迁移过程网站要关站吗? A:按本 SOP 走不需要。DNS 切换前旧机一直在线服务,切换瞬间新机已就绪,用户无感知。
Q2:新机买什么配置? A:不小于旧机即可。小站 1核1G 起步(RackNerd/CloudCone 年付档足够),国内访问敏感就上 CN2 GIA 线路。
Q3:旧机到期前一天才迁来得及吗? A:来得及但很赶,且没有回退窗口。正确做法是提前一周开始,旧机最后 7 天当”后悔药”。
Q4:迁移会掉 SEO 排名吗? A:域名不变 + 内容不变 + 无长时间停机,通常 1~2 周内恢复平稳。关键是别让网站出现 5xx/超时,搜索引擎对”访问不了”最敏感。
Q5:宝塔一键迁移和手动迁哪个好? A:面板的”一键迁移”适合同面板同版本,省事;跨面板/跨版本/自建环境建议按本文手动 SOP 走,可控性更高。
Q6:迁移后旧机 IP 会被回收吗? A:终止服务后由商家回收。如果你有服务依赖固定 IP(如白名单 API),迁移前务必确认替代方案。
利益相关声明:本文含商家官方推广链接,通过链接购买作者可能获得推广奖励,但不影响推荐结论,也不会让你的购买价格变高。价格与产品信息采集于 2026 年 9 月,请以商家官网实时信息为准。
相关阅读: – 《从买 VPS 到 WordPress 上线:30 分钟建站全流程》 – 《VPS 选购指南 2026:从入门到精通的保姆级教程》