阿里云轻量 2核2G 38元/年起 · 新客秒杀限量 去看看

云服务器迁移搬家全攻略:零停机迁移方案

WeHosts技术团队·2026年3月26日·更新于 2026年10月21日

快速结论

  • 迁移前必做:完整备份数据 + 验证备份可恢复 + 编写回滚方案
  • 核心技术:DNS切换 + 双写过渡期 = 真正零停机迁移
  • 工具推荐:阿里云SMC(服务器迁移中心)一键迁移最省事
  • 风险最高的操作:数据库迁移,必须验证数据一致性后再切换

迁移场景分类

场景一:同云内迁移

  • 同地域不同可用区(最简单)
  • 跨地域迁移(北京 -> 上海)
  • 调整实例规格(升降配)

场景二:跨云迁移

  • 阿里云 -> 腾讯云
  • 腾讯云 -> 华为云
  • AWS -> 国内云

场景三:物理机/IDC上云

  • 自建机房迁移到公有云
  • 托管服务器迁移到云

要不要上云、什么规模适合混合架构,见云服务器 vs 物理服务器。


迁移前准备清单

第一步:资产梳理

迁移前,彻底摸清要迁移的内容:

## 服务器资产清单

### 操作系统
- OS版本:CentOS 7.9
- 内核版本:3.10.0-1160
- 已安装软件:Nginx 1.18, Node.js 18, MySQL 8.0, Redis 7.0

### 应用
- 前端:静态文件,/var/www/html/
- 后端:Node.js进程,端口3000,PM2管理
- 定时任务:Crontab(5个任务)

### 数据
- MySQL数据库:mydb(50GB)
- Redis缓存:约500MB
- 文件存储:/data/uploads/(120GB图片)
- 日志文件:/var/log/(可不迁移)

### 外部依赖
- 域名:yourdomain.com(DNS解析在阿里云)
- SSL证书:Let's Encrypt
- 第三方服务:微信支付、短信API
- 数据库白名单:旧IP需要替换为新IP

### 网络配置
- 安全组规则清单
- 防火墙规则
- 内网IP依赖(有无hardcode的内网IP?)

第二步:创建迁移测试方案

迁移前在新服务器上模拟一遍:

  1. 恢复数据库,验证数据完整性
  2. 启动所有服务,验证功能正常
  3. 运行自动化测试套件
  4. 压测性能,确认新配置满足需求

第三步:编写回滚方案

出了问题怎么回滚?

## 回滚方案
1. DNS切换:将域名解析改回旧服务器IP(<5分钟)
2. 旧服务器保留运行状态:迁移后保留7天,确认稳定后再关闭
3. 数据库:迁移期间旧库保持只读,新旧同步,随时可回切

零停机迁移技术

核心思路

阶段1:准备新环境(不影响现有服务)
阶段2:数据同步(双写或复制)
阶段3:流量切换(DNS切换,5-30分钟TTL)
阶段4:验证新环境(监控30分钟)
阶段5:清理旧环境(7天后)

数据库零停机迁移

数据库迁移是最复杂的部分,关键在于迁移期间数据不丢。

方案一:MySQL主从复制(推荐)

# 在新服务器上配置MySQL从库,实时同步旧库
# 1. 旧库开启binlog
# my.cnf
[mysqld]
log_bin = mysql-bin
server_id = 1
binlog_format = ROW

# 2. 新库配置为从库
CHANGE MASTER TO
  MASTER_HOST='旧服务器IP',
  MASTER_USER='repl',
  MASTER_PASSWORD='replpassword',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=0;

START SLAVE;

# 3. 验证同步状态
SHOW SLAVE STATUS\G
# 检查 Seconds_Behind_Master 是否为0

# 4. 切换时:停止写入旧库 → 等待同步完成 → 应用连接新库

方案二:阿里云DTS(数据传输服务)

阿里云DTS支持实时数据迁移,业务无感知:

功能:
- 支持MySQL、PostgreSQL、MongoDB、Redis迁移
- 支持全量迁移 + 增量同步
- 延迟通常<1秒
- 支持跨云厂商迁移

价格:
- 按实例规格计费,小规格约680元/月

开通阿里云DTS

文件数据迁移

大文件迁移(推荐rsync):

# 使用rsync增量同步文件
# 第一次全量同步(可能需要几小时)
rsync -avz --progress \
  /data/uploads/ \
  user@新服务器IP:/data/uploads/

# 之后每小时增量同步
# 切换前最后一次增量同步,确保数据最新
rsync -avz --checksum \
  /data/uploads/ \
  user@新服务器IP:/data/uploads/

对象存储迁移(OSS -> COS):

# 使用ossutil迁移到腾讯云COS
ossutil cp oss://source-bucket/ cos://target-bucket/ \
  --recursive \
  --jobs 10

实战:物理机迁移到阿里云

使用SMC(服务器迁移中心)

阿里云SMC是迁移神器,支持将任意物理机/虚拟机迁移到阿里云ECS。

迁移流程:

# 1. 下载SMC客户端
wget https://p2v-tools.oss-cn-hangzhou.aliyuncs.com/smc/Alibaba_Cloud_Migration_Tool.zip
unzip Alibaba_Cloud_Migration_Tool.zip

# 2. 配置AccessKey
cd go2aliyun_client_linux_x86_64
# 编辑 client_data 文件(或通过环境变量配置)
export ACCESS_KEY_ID=your_access_key
export ACCESS_KEY_SECRET=your_secret

# 3. 运行迁移客户端
./go2aliyun_client

# 4. 在SMC控制台监控迁移进度
# 通常需要2-8小时(取决于数据量)

SMC迁移特点:

  • 支持Windows和Linux
  • 数据块级别迁移,效率高
  • 支持断点续传
  • 迁移过程中源服务器继续运行,不影响业务

了解阿里云SMC迁移中心


DNS切换:最后一步

DNS切换是真正的流量切换时刻,需要精心准备:

切换前准备

# 1. 提前降低TTL
# 切换前24小时,将DNS TTL从3600秒改为60秒
# 这样切换后最多60秒全球生效

# 2. 在新服务器上验证功能
curl -H "Host: yourdomain.com" http://新服务器IP/api/health

# 3. 准备回滚DNS配置(一键可回切)

切换步骤

# 切换DNS解析(以阿里云DNS为例)
aliyun alidns UpdateDomainRecord \
  --RecordId your_record_id \
  --RR "@" \
  --Type A \
  --Value 新服务器IP \
  --TTL 60

# 验证DNS生效
dig yourdomain.com @8.8.8.8

切换后监控

切换后30分钟内密切关注:

  • 错误率(应<0.1%)
  • 响应时间(应与迁移前相近)
  • 服务器日志(有无异常报错)
  • 业务指标(订单量、用户登录量)

跨云迁移(腾讯云 -> 阿里云)

跨云迁移不像同云迁移有官方工具,需要手动操作:

  1. 数据库:mysqldump导出 -> 传输 -> 导入目标云
  2. 文件:rsync跨云传输(建议走内网专线或VPN,避免公网带宽费用)
  3. 应用:在目标云部署相同应用,通过自定义镜像加速
  4. 配置:修改内网IP、数据库连接字符串、存储桶地址等

跨云传输加速技巧:

# 使用压缩减少传输量
tar czf - /data/ | ssh user@新服务器 "tar xzf - -C /data/"

# 使用内网VPN避免公网带宽费用(两云之间建立VPN)

推荐方案

同云跨区域:阿里云镜像复制 + 快照复制,最简单

物理机上云:阿里云SMC或腾讯云在线迁移,一键迁移

数据库迁移:使用DTS/阿里云数据同步,零停机

迁移不必恐慌,充分准备是关键。按照本文的步骤一步一步来,绝大多数迁移都能平稳完成。


延伸阅读:2026 云服务器选购避坑指南 · 对象存储 OSS/COS 对比与迁移 · 服务器监控与告警指南 · 云服务器价格对比 · 成本优化顾问

本文可能含联盟推广链接,购买不增加你的价格,详见联盟披露。

文中提到的云平台当前活动价

文中价格均来自各平台公开活动页。想直接对比在售机型,可以先看下面这些:价格核实日期与台账一致,以活动页为准。