跨云厂商服务器迁移指南:从 A 厂商搬到 B 厂商的完整流程

换云厂商在实际运营中很常见——可能是价格因素、性能需求变化,或者被某家厂商的促销吸引。但迁移过程如果操作不当,可能导致网站长时间宕机甚至数据丢失。本文提供一套标准的迁移流程。

一、迁移前的准备

1.1 评估新旧环境差异

在做任何操作前,先对比新旧厂商的差异:

评估项 检查内容
操作系统版本 Ubuntu 22.04 vs 24.04、CentOS 7 vs Rocky Linux 9
软件栈版本 PHP/Node.js/Python/Java 版本是否一致
数据库版本 MySQL/PostgreSQL 版本兼容性
系统架构 x86 vs ARM(换架构可能需要重新编译应用)
网络规划 VPC 网段、子网划分、安全组规则
特殊服务 是否有使用厂商的托管服务(RDS、Redis、OSS 等)

1.2 创建迁移清单

□ 列出所有服务器清单
□ 记录当前配置(CPU/内存/磁盘/带宽)
□ 导出安全组/防火墙规则
□ 收集数据库连接信息
□ 记录定时任务(crontab)
□ 备份 SSL 证书和私钥
□ 导出 DNS 记录
□ 整理环境变量和配置文件

二、数据迁移

2.1 文件迁移

使用 rsync 是最安全高效的方式:

# 全量同步
rsync -avz --progress /var/www/ user@new-server:/var/www/

# 增量同步(切换前最后同步一次)
rsync -avz --delete --progress /var/www/ user@new-server:/var/www/

2.2 数据库迁移

# 源服务器导出
mysqldump -u root -p --single-transaction --quick --all-databases > all-dbs.sql

# 导入到目标服务器
mysql -u root -p < all-dbs.sql

# 或使用管道直传
mysqldump -u root -p --single-transaction --all-databases | ssh user@new-server "mysql -u root -p"

2.3 配置迁移

复制以下配置文件到新服务器:

  • Nginx/Apache 配置文件
  • PHP-FPM 配置
  • Redis/Memcached 配置
  • Supervisor 进程管理配置
  • 环境变量(.env 文件)

三、环境重建

3.1 快速重建方法

方法一:手动安装(推荐)

在新服务器上重新安装软件栈,这样可以确保版本最新且配置干净:

# Ubuntu/Debian
apt update && apt install nginx mysql-server php-fpm redis-server

# 然后复制配置文件
scp old-server:/etc/nginx/sites-enabled/* /etc/nginx/sites-enabled/

方法二:配置管理工具

如果使用了 Ansible、Puppet 或 SaltStack,只需在新服务器上运行 Playbook 即可。

方法三:容器化

如果应用已容器化(Docker),迁移最简单——只需在新的服务器上运行 docker-compose up -d

3.2 数据验证

迁移完成后,在新服务器上验证:

# 检查服务状态
systemctl status nginx mysql php8.1-fpm

# 检查数据库数据
mysql -u root -p -e "SELECT COUNT(*) FROM information_schema.tables;"

# 测试网站功能
curl -I http://localhost/

四、DNS 切换

4.1 降低 TTL

迁移前 48 小时将 DNS TTL 降至 300 秒(5 分钟),加速切换后的生效速度:

www.example.com.  300  IN  A  123.456.789.0

4.2 切换 DNS

在域名注册商处将 A/AAAA/CNAME 记录指向新服务器 IP。

4.3 切换后的监控

切换后持续监控 24-48 小时:

# 检查 DNS 解析是否已更新
dig example.com +short

# 监测网站响应时间
curl -o /dev/null -s -w "HTTP %{http_code}, Time: %{time_total}s\n" https://example.com/

# 检查 SSL 证书
openssl s_client -connect example.com:443 -servername example.com

五、回滚计划

迁移完成后保留旧服务器至少 7 天。如果发现严重问题,回滚步骤:

  1. DNS 记录切回旧服务器 IP
  2. 确认旧服务器上的服务正常运行
  3. 排查差异并重新准备迁移
  4. 选择低峰时段再次迁移

六、常见云厂商迁移场景

阿里云 → 腾讯云

  • 注意:内网 IP 会变化,检查配置文件中是否有写死的 IP
  • 阿里云 RDS 用户需要先导出数据到本地,再导入腾讯云 CDB
  • OSS 文件需要通过 ossutil 下载到本地再上传到 COS

国内云 → 海外 VPS

  • 注意:跨境网络延迟和带宽限制
  • 使用国内中转服务器加速数据传输
  • ICP 备案问题:海外服务器无需备案

传统 IDC → 云服务器

  • 物理服务器需要先虚拟化或打包环境
  • 评估迁移后的架构设计(是否需要拆分服务)

七、总结

跨云迁移是一项需要精细规划的工作。成功的关键在于充分的准备和验证。建议在低峰时段执行迁移,并在切换前进行完整的预演。大多数迁移问题都源于忽略环境差异和未做充分测试。保留旧环境和完整备份,是迁移过程中最重要的安全网。