服务器迁移实战:一年换了 5 台 VPS 的经验总结
## 为什么要迁移
你可能出于这些原因迁移服务器:促销到期、升级配置、换服务商、被墙 IP。我一年换了 5 台 VPS,总结了一套零停机迁移方案。
## 迁移前:做好架构准备
**1. 用 Docker 跑所有服务**
Docker 化的服务迁移就像搬箱子。一条 `docker compose up -d` 就能在新服务器上恢复所有服务。
**2. 数据与程序分离**
把持久化数据都映射到宿主机的统一目录:`/data/blog`、`/data/mysql` 等。迁移时只需要 rsync `/data` 目录。
**3. 用域名而不是 IP**
所有服务绑定域名,迁移时只需改 DNS 解析。
## 迁移步骤
**步骤 1**:新服务器基础配置(安装 Docker、同步 SSH 公钥)
**步骤 2**:同步数据
```bash
rsync -avzP /data/ root@new-server:/data/
# 关闭旧服务,做增量同步
rsync -avzP --delete /data/ root@new-server:/data/
```
**步骤 3**:数据库迁移
```bash
mysqldump -u root -p --all-databases > full_backup.sql
scp full_backup.sql new-server:/tmp/
ssh new-server "mysql -u root -p < /tmp/full_backup.sql"
```
**步骤 4**:在新服务器启动服务并验证
**步骤 5**:切换 DNS。TTL 提前设为 120 秒。
**步骤 6**:保留旧服务器 48 小时,DNS 缓存完全刷新后再下线。
## 迁移检查清单
- SSL 证书重新签发
- 定时任务已迁移
- 防火墙规则已配置
- 数据库已恢复,数据完整
- 监控/告警已重新配置
## 经验教训
1. 别在同一天取消旧服务器
2. 提前在 hosts 文件中测试新 IP
3. Cloudflare 用户注意 SSL 模式
4. 备份不要删,迁移完成后保留至少一周
掌握这套流程后,换服务器就像换衣服一样简单。
💬 暂无评论