一次 VPS 迁移记录:备份、切流量、收尾
记录一次从旧机器迁移到新机器的完整过程。整体思路是:先并行跑一段时间,再切流量,最后下线旧机器。
一、备份
先确认要带走的范围:站点文件、数据库、配置文件、证书、定时任务。
tar czf backup.tar.gz /var/www /etc/nginx /ssl
mysqldump --single-transaction app > app.sql
crontab -l > crontab.bak
--single-transaction 对 InnoDB 可以在不锁表的情况下拿到一致快照,避免备份期间写入丢失。
二、新机准备
先把系统版本、软件版本对齐。旧机器上的配置如果能直接拷,就拷贝过去;如果版本差异大,宁可重新写一遍,别硬套。
nginx -v
php -v
mysql --version
三、并行运行
新机器先用 IP 或者临时域名跑起来,逐项验证:静态页、接口、上传、定时任务、证书。
这一步别省。很多问题(比如时区、权限、扩展缺失)只有在真实请求下才会暴露。
四、切流量
切换前把 DNS 的 TTL 提前调小,比如提前 24 小时改成 300 秒。否则旧记录会在递归服务器里滞留很久,切换后一部分用户还打到旧机器上。
A @ 新IP TTL 300
确认新机器上的访问日志出现真实流量后,再观察一段时间。
五、收尾
- 旧机器保留至少一周,不要立刻销毁;
- 检查证书续期、日志轮转、监控告警是否都指向新机;
- 把 DNS TTL 调回正常值;
- 记录变更,方便以后回滚。
迁移本身不复杂,真正容易出事的是“以为迁移完了”之后的那些遗留配置。