服务器迁移实战:一年换了 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. 备份不要删,迁移完成后保留至少一周

掌握这套流程后,换服务器就像换衣服一样简单。

💬 暂无评论