ARTICLE

DMIT 迁移指南:零停机迁移现有服务到 DMIT

评估、数据迁移、DNS 切换与验证的完整迁移流程,含常见问题与时间线。

迁移到 DMIT 前的准备

将现有服务迁移到 DMIT 云服务器需要提前规划。匆忙迁移可能导致数据丢失或服务中断。本文提供完整的迁移流程,从评估到切换再到验证。

第一步:评估现有环境

迁移前先盘点当前服务器的资源使用情况:

# CPU 使用率
top -bn1 | grep "Cpu(s)"

# 内存使用
free -h

# 磁盘使用
df -h
du -sh /var/www/ /opt/ /home/  # 各目录大小

# 网络流量
vnstat -m   # 如果已安装

根据评估结果选择合适的 DMIT 套餐。选套餐的方法见《DMIT 选购指南》,性价比比较见《套餐性价比分析》。

第二步:准备目标服务器

购买 DMIT 套餐后,按《初次部署检查清单》完成基础配置:

  • 系统更新与时区设置
  • SSH 安全加固(密钥登录/禁用密码/防火墙)
  • 安装所需运行环境(Nginx/数据库/语言运行时等)
  • 创建快照作为回滚点

第三步:迁移数据

网站文件

# 使用 rsync 增量同步
rsync -avz --progress /var/www/ deploy@new-server:/var/www/

# 如果数据量大,先在旧服务器打包
tar czf /tmp/www-migrate.tar.gz /var/www/
# 传输到新服务器
scp /tmp/www-migrate.tar.gz deploy@new-server:/tmp/
# 在新服务器解压
ssh deploy@new-server "tar xzf /tmp/www-migrate.tar.gz -C /"

数据库

# MySQL/MariaDB 导出
mysqldump -u root -p --all-databases --single-transaction > /tmp/dump.sql

# 传输到新服务器
scp /tmp/dump.sql deploy@new-server:/tmp/

# 在新服务器导入
mysql -u root -p < /tmp/dump.sql

# PostgreSQL 导出
pg_dump -U postgres -F c -f /tmp/db.dump dbname
# 传输后在新服务器导入
pg_restore -U postgres -d dbname /tmp/db.dump

配置文件

# Nginx 配置
scp /etc/nginx/sites-available/* deploy@new-server:/etc/nginx/sites-available/
# 注意:检查路径、SSL 证书和 upstream 是否需要调整

# Supervisor/Systemd 服务
scp /etc/supervisor/conf.d/* deploy@new-server:/etc/supervisor/conf.d/
scp /etc/systemd/system/*.service deploy@new-server:/etc/systemd/system/

SSL 证书

# Let's Encrypt 证书迁移
scp -r /etc/letsencrypt/ deploy@new-server:/etc/letsencrypt/
# 或在新服务器重新申请
certbot --nginx -d example.com

第四步:验证新服务器

在切换 DNS 前,先在新服务器上验证服务是否正常:

# 修改本地 hosts 文件指向新服务器 IP
# Windows: C:\Windows\System32\drivers\etc\hosts
# Linux/Mac: /etc/hosts
# 添加:123.45.67.89 example.com

# 然后测试
curl -I https://example.com
curl -I https://example.com/api/health

验证清单:

  • 网站首页正常加载
  • API 接口返回正确响应
  • 数据库读写正常
  • HTTPS 证书有效
  • 静态资源(图片/CSS/JS)正常加载
  • 后台管理页面可访问

第五步:切换流量

方案 A:DNS 切换(推荐)

将 DNS A 记录指向新服务器 IP。DNS 传播需要时间,建议:

  • 提前降低 DNS TTL(如 300 秒),加速传播
  • 选择低流量时段切换
  • 切换后监控旧服务器日志,确认流量已转移

方案 B:反向代理切换(零停机)

在旧服务器上配置 Nginx 反向代理到新服务器,逐步切换:

# 旧服务器 Nginx
location / {
    proxy_pass http://new-server-ip:80;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

确认无误后切换 DNS 到新服务器,删除旧服务器的反向代理。

第六步:迁移后验证

项目验证方法
DNS 已指向新服务器dig example.com +short 返回新 IP
网站可访问浏览器访问正常
HTTPS 正常证书有效,无警告
数据库数据完整对比关键表记录数
定时任务已迁移crontab -l 列出所有任务
监控已配置查看监控面板是否有数据
备份已配置确认自动备份脚本运行

常见迁移问题

数据库连接不上?

  • 检查数据库监听地址(bind-address 是否允许远程连接)
  • 检查防火墙是否放行数据库端口
  • 检查数据库用户权限是否包含新服务器 IP

文件权限不对?

# 修复 Web 目录权限
chown -R www-data:www-data /var/www/
find /var/www/ -type d -exec chmod 755 {} \;
find /var/www/ -type f -exec chmod 644 {} \;

502 Bad Gateway?

  • 检查后端服务是否运行:systemctl status your-app
  • 检查 Nginx upstream 配置的端口是否正确
  • 检查 SELinux/AppArmor 是否阻止连接

迁移时间线建议

时间任务
迁移前 3 天购买 DMIT 套餐、完成基础配置
迁移前 2 天安装运行环境、迁移数据(首次 rsync)
迁移前 1 天增量 rsync、配置文件迁移、新服务器验证
迁移日最终增量 rsync、DNS 切换、验证
迁移后 1 周保持旧服务器运行作为回退、监控新服务器

迁移完成后,别忘了创建快照并配置自动备份。详见《监控与备份最佳实践》。SSH 安全加固见《SSH 安全加固》。

本文核对日期:2026-08-18。迁移细节以你的具体服务架构为准。

NEXT STEP

看完教程,选一台合适的 DMIT

用套餐快照按预算与线路筛选,或直接前往官网查看实时库存。

推广披露:通过链接购买可能为推荐者带来佣金,不会增加你的购买价格。