1.1 资产清点:记录所有域名、子域、IP、端口、证书、后端服务、数据库、缓存、队列、CRON、外部依赖(邮件、支付、第三方 API)。建议导出一份 CSV 清单。
1.2 性能与流量评估:统计峰值并发、每秒请求数、带宽、磁盘 IO。依据这些选择租用的美国服务器配置(CPU、内存、带宽、SSD)。
1.3 依赖梳理:列出必须与国内通信的服务(DNS、短信、支付),提前确认跨境连通性与合规。
2.1 系统与网络初始化:选择相同或兼容的操作系统版本,禁用不必要服务,配置时区与 NTP。示例:apt/yum 更新与安装常用工具。
2.2 安全配置:配置防火墙(iptables/nftables/ufw),仅开放必需端口(80/443/22/3306/6379 等),并启用 Fail2Ban。
2.3 性能优化:调整内核参数(sysctl)、开启 TCP 调优(tcp_tw_recycle/tcp_fin_timeout 等按需配置),挂载 SSD 并优化 I/O 调度。写出具体 sysctl 示例便于复制。
3.1 方案一:主从复制(推荐零宕机)。在旧库上开启 binlog(MySQL),在新库上配置 replica,等待同步完成后切换读写。
3.2 方案二:热备与 rsync/xbstream(适用于大库)。使用 Percona XtraBackup 做热备份,传到美国机房后恢复并启动复制。
3.3 方案三:小库直接 mysqldump + 导入(停机窗口短时可用)。命令示例:mysqldump -A --single-transaction --master-data=2 > backup.sql
4.1 初始同步:使用 rsync 进行首轮全量传输:rsync -azP --delete /var/www/ user@us-server:/var/www/ 。保证权限与 SELinux/ACL 保持一致。
4.2 增量实时同步:部署 lsyncd 或使用 unison/lsyncd 配合 inotify 实时同步小文件变更,减少差异窗口。
4.3 大文件处理:静态资源可考虑迁移到 CDN(Cloudflare/Akamai/腾讯云 CDN)并保留源站作为回源,减轻源站流量。
5.1 提前降低 TTL:在 D-7 至 D-2 将关键域名的 DNS TTL 降至 60s 或 120s,确保切换快。
5.2 切换步骤:完成验证后在时间窗口内将 A/AAAA 记录指向美国 IP;若使用 LB,切换 CNAME 到新的负载均衡器。
5.3 回滚预案:记录旧 IP 与旧 TTL,并在切换后保留短时间监控,如果异常立即恢复旧记录。
6.1 引入负载均衡器:在美国机房部署 Nginx/Haproxy/Cloud LB,配置 health_check(/health),确保只有健康节点入池。
6.2 使用双向代理或灰度:先把 5% 流量导向新机房,观察 24-48 小时后逐步放量,确保稳定再完全切换。
6.3 会话保持与共享存储:若有需要,使用 sticky session 或将 session 存到 Redis/Memcached,确保会话不丢失。
7.1 私钥与证书安全迁移:将证书与私钥通过 scp/sftp 传到美国服务器并设置严格权限(chmod 600)。
7.2 自动化续期:在新环境上部署 certbot 或使用云服务的托管证书,测试自动续期脚本:certbot renew --dry-run。
7.3 HSTS、OCSP 与中间证书:确保链完整并测试 openssl s_client -connect yourdomain:443 -showcerts
8.1 功能验证:API 流程、支付、邮件、文件上传、CRON 任务等在新机房均需验证。
8.2 性能测试:用 ab/jmeter/hey 做压力测试,验证响应时间、连接数与数据库性能瓶颈。
8.3 安全扫描:跑一次基础漏洞扫描与端口检测,确保无意外暴露服务。
9.1 时间点 T-48h:将 TTL 降至 60s(若还未做)。
9.2 T-24h:完成主从同步并停止对旧主的写入(方式:设置应用在新主写,旧主做只读),或启用双写策略并监控延迟。
9.3 T-5m:确认所有健康检查通过、流量灰度开始。T 时刻将 DNS 指向新 IP,同时监控 1)错误率 2)延迟 3)数据库复制延迟。
10.1 实时监控:监控面板(Prometheus+Grafana/Datadog)观测错误率、95/99 响应时间、数据库延迟、队列长度。
10.2 回滚条件与步骤:若错误率或关键业务失败,立即将 DNS 指回旧 IP,或通过 LB 将流量移回旧集群,并记录切换时间与原因。
10.3 数据一致性:若切换后发现数据丢失,依据 binlog 或 XtraBackup 恢复差异,并在停机窗口内回补数据。
11.1 日志集中与审计:将日志收集到 ELK/EFK 平台,分析异常并调整告警阈值。
11.2 清理与成本优化:确认旧资源不再使用后,关闭或回收旧机房实例,避免浪费带宽和实例费用。
11.3 经验总结:记录迁移过程、问题与解决方案,制作 Runbook 以便下次复用。
12.1 答:采用主从复制+双写或暂停写入策略。推荐做法是先建立从库(美国)并等待同步到最新 binlog,然后在应用层临时开启双写(写入旧主并转发到新主),或短暂停止写操作并完成切换。若使用双写,要实现幂等及冲突检测,务必在切换后对比主键/时间戳,使用工具(pt-table-sync)进行数据校验与修复。
13.1 答:提前把 TTL 降到 60s 是关键;切换时监控各大 DNS 池解析是否生效。对于依赖 DNS 缓存长的客户端(某些 ISP),可同时使用负载均衡器或 Anycast IP 将流量引导到新机房。必要时通过 CDN 或 DNS 服务商的流量管理策略做加速回退。
14.1 答:在迁移前做跨境连通性测试:从国内不同运营商模拟请求到美国服务器,测量延迟与丢包。对合规性,确认数据是否涉及境外存储限制(个人敏感信息、金融/医疗数据),必要时与法务确认并采取加密、分区或不迁移特定数据的策略。