1.
准备阶段:评估与规划
- 统计当前站点资源:文件体积、数据库大小、月流量与并发峰值。举例:文件 2.5GB、MySQL 1.2GB、月 PV 50万、峰值并发 120。
- 确定目标区域与运营商:美国东部(纽约)、美国西部(硅谷)或中部(达拉斯),并估算到国内的网络延迟,常见 RTT 为 120-250ms。
- 选择合适实例规格:示例配置可选 t3.medium(2 vCPU/4GB)或更高 4 vCPU/8GB,带宽按 100Mbps 计费或按流量计费。
- 备份策略:本地与远程双备份,数据库导出使用 mysqldump 全量或 xtrabackup。示例命令:mysqldump -u root -p --single-transaction --quick dbname > db.sql。
- 业务影响评估:评估可容忍的停机时间(例如 15 分钟),并准备回滚方案与测试域名。
2.
- 确定云厂商与产品类型:VPS(如 Vultr/Linode/DO)或云主机(如 AWS EC2/Azure),示例选型:AWS t3a.medium(2 vCPU/4GB)。
- 存储选择:SSD 推荐使用 80GB 起步,系统盘与数据盘分离更利于快照备份。示例:40GB 系统盘 + 100GB 数据盘。
- 出口带宽与防护:建议选择包含 DDoS 基础防护或配合 Cloudflare,按需购买高防 IP(例如 100Gbps 抗 DDoS)。
- 安全组与防火墙:开放 22/80/443,限制 22 仅允许管理 IP,示例 ufw 配置:ufw allow 80/tcp; ufw allow 443/tcp; ufw allow from 管理IP to any port 22。
- SSL 与域名准备:在迁移前申请好 Let's Encrypt 证书或上传自签证书,预留域名控制权并降低 TTL(例如 300 秒)以便切换。
3.
数据迁移:文件与数据库传输实操
- 文件同步:使用 rsync 增量同步,示例命令:rsync -avz --delete -e "ssh -p22" /var/www/ user@us-server:/var/www/;测算速率:若平均 10 MB/s,同步 2.5GB 约需 4-5 分钟(理论)。
- 数据库迁移:先导出再导入,示例 mysqldump 导出 1.2GB 数据,导出耗时约 60-150 秒,scp 传输或通过管道导入:mysqldump ... | pv | ssh user@us-server "mysql -u root -p dbname"。
- 实时增量同步:切换窗口前做最后一次增量 rsync 与 binlog 同步,保证数据一致。
- 测试恢复:导入后检查站点页面、日志与数据库连接,执行 SELECT COUNT(*) 检查记录数一致性。
- 迁移耗时示例(真实案例):某企业博客文件 2.5GB、DB 1.2GB,rsync 平均 9 MB/s,首次全量 6 分钟,mysqldump 导出 110 秒,整体切换实际停机 12 分钟。
4.
DNS 切换与 CDN 集成
- 降低 DNS TTL:提前 24 小时将主域 A 记录 TTL 降到 300(5 分钟)以便快速回滚。
- 切换流程:先把新服务器 IP 添加为备选记录,完成健康检查后将主 A 指向新 IP。
- CDN 部署:建议接入 Cloudflare 或 Akamai,启用缓存、动静分离和 HTTPS,测试缓存命中率与边缘节点延迟。
- 缓存策略:设置静态资源长缓存(Cache-Control 30 天),动态页面使用 Edge Cache 或按需缓存。
- 切换后验证:全站抓取 200 页,确认 200 状态、SSL 正常、Cookies/Session 在必要时做回源处理。
5.
DDoS 与安全防护配置
- 层级防护:边缘 CDN 防护 + 云厂商基础防护 + 主机级防火墙。建议开启 Cloudflare 的“我在攻击”模式遇到大流量时。
- 流量监控:监控带宽突发,设置告警阈值(例如 80% 带宽利用率或异常 SYN 数)。
- 防火墙策略:使用 fail2ban 阻断暴力登录,配置 iptables 或 nftables 限速,示例 iptables 限速 SSH:iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 6 -j DROP。
- 日志与溯源:开启访问日志与审计,保留 30 天,便于流量回溯与取证。
- 演练与演习:定期模拟攻击或流量峰值(限自家环境)验证防护能力并调整规则。
6.
性能调优与运维监控
- Web 服务与缓存:部署 Nginx + PHP-FPM(示例:worker_processes auto,php-fpm pm.max_children=40),并启用 OPcache。
- 数据库调优:调整 innodb_buffer_pool_size 到内存的 60-70%(示例 8GB 系统分配 4.5GB)。
- 监控工具:Prometheus + Grafana 或 NewRelic,监控 CPU、内存、磁盘 IO、网络带宽与 MySQL 慢查询。
- 自动化与备份:每日全量快照、每小时增量备份数据库并保留 7 天快照,使用脚本自动化恢复演练。
- 费用控制:估算月费用,示例表格展示常见配置与费用对比(见下表)。
7.
真实案例总结与常见问题
- 案例概述:某内容站从国内阿里云 ECS(2 vCPU/4GB,带宽 10Mbps)迁移到美国 VPS(2 vCPU/4GB,100Mbps),月流量 50 万 PV,迁移后平均首页响应从 450ms 提升到 220ms(配合 CDN 后)。
- 迁移耗时与停机:全流程测试与最终 DNS 切换共耗时 3 小时,实际用户感知停机约 12 分钟。
- 常见问题:图片外链被墙、第三方接口国内访问慢,解决方案是使用国内代理或将接口继续通过国内中转节点访问。
- 回滚策略:保留国内主机 48 小时,TTL 在回滚窗口内可迅速复原。
- 经验要点:提前测试、降低 DNS TTL、做好备份与 DDoS 防护、使用 CDN 缓解跨境延迟。
8.
示例服务器配置对比表
| 位置 | 配置 | 带宽 | 月估费(USD) | 平均 RTT 到国内 |
| 国内(阿里云) | 2 vCPU / 4GB / 80GB SSD | 10 Mbps | $30 | 30-50 ms |
| 美国(VPS) | 2 vCPU / 4GB / 100GB SSD | 100 Mbps | $40 | 120-220 ms |
| 美国(云主机) | 4 vCPU / 8GB / 200GB SSD | 带宽弹性(按量计费) | $120 | 120-200 ms |
来源:迁移步骤手把手教你从国内主机迁移到美国虚拟主机云服务器