- 登录云厂商控制台,查看试用期时长、CPU、内存、带宽、磁盘配额与快照次数。
- 记录试用到期时间,设定提前48小时提醒;确认是否需要实名及信用卡认证以避免中途被停机。
- 检查是否存在地域、带宽峰值或出口流量限制,决定迁移数据量和并发策略。
- 列出要迁移的应用、数据库、缓存、队列、SSL证书和外部服务依赖(短信、第三方API)。
- 确认运行环境版本(OS、PHP/Node/Python、数据库版本),记录配置文件路径和自定义脚本。
- 标注必须保留的日志和敏感数据,计划加密或脱敏迁移流程。
- 制定时间表:准备、备份、同步、切换DNS、验证、回滚窗口(例如2小时)。
- 回滚策略:在目标机未通过检查前不删除源机;在切换DNS前保留源机最少24小时快照。
- 明确联络人、权限(SSH密钥管理)和应急电话/群组。
- 全量备份文件:在源服务器上打包并校验 sha256sum,例如:tar czf /tmp/site.tgz /var/www && sha256sum /tmp/site.tgz > /tmp/site.tgz.sha256。
- 导出MySQL:mysqldump --single-transaction --quick --routines -u root -p database > /tmp/db.sql。若大库用分卷或使用Percona XtraBackup。
- 将备份传至本地或对象存储(建议同时上传到云厂商的对象存储,避免试用期内磁盘不足)。
- 创建实例并设置安全组(只开放SSH、HTTP/HTTPS及必要端口),示例ufw:ufw allow 22/tcp; ufw allow 80/tcp; ufw allow 443/tcp; ufw enable。
- 安装必需软件:apt update && apt install -y nginx mysql-client php-fpm(根据应用栈调整)。
- 上传并校验备份:scp user@source:/tmp/site.tgz /tmp/ && sha256sum -c /tmp/site.tgz.sha256。
- 使用rsync增量同步,保持权限:rsync -azP --delete --exclude='cache/' user@source:/var/www/ /var/www/。
- 恢复数据库:mysql -u root -p database < /tmp/db.sql;大库可先导入到临时库并逐步验证。
- 恢复配置与证书:复制 nginx/conf 和 /etc/letsencrypt;测试配置 nginx -t && systemctl reload nginx。
- 减少TTL:在切换前24小时将DNS记录TTL降到60秒。
- 灰度切换:先把部分子域名或VIP切到新机,或使用负载均衡实现权重切换;监控错误率与响应时间。
- 完全切换:确认无问题后更新主域A记录并恢复TTL;保留源机至少24小时以便回滚。
- 功能验证:跑自动化测试用例或手动检查核心路径(登录、下单、上传)。
- 监控配置:启用云监控告警(CPU、内存、磁盘、带宽、HTTP 5xx);部署日志采集(ELK/Fluentd)。
- 清理:确认无误后删除临时备份与无用快照,但在试用期结束前保留必要快照并记录计费风险。
答:先不要删除源机快照或备份;将DNS指回旧IP(TTL低可快速生效),或把负载均衡权重调回;如果DNS已过期用临时hosts文件在关键机器上恢复访问并导出必要数据再做完整恢复。
答:采用预同步+增量策略:先在非生产时段全量传输(用rsync或对象存储),上线前做最后一次增量rsync并即时切换数据库二进制日志或使用主从切换来减少停机时间。
答:常见问题包括安全组端口未开、环境版本不一致、证书未迁移、外部API回调未更新、以及忘记调整DNS TTL;逐项检查清单并做一次演练可显著降低风险。