迁移到 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。迁移细节以你的具体服务架构为准。