
1. 说明与常见缩写:美国服务器在不同厂商常用简称如下:AWS 使用区域代码如 "us-east-1"(北弗吉尼亚)、"us-west-2"(俄勒冈);Azure 用 "eastus"、"westus2";GCP 用 "us-central1"、"us-east1"。
2. 识别规则:一般格式为 [地理位置缩写]-[方向/区号]-[序号] 或 单词形式(eastus)。
2. AWS/GCP/Azure 示例:
- AWS 列区域:aws ec2 describe-regions --output table;示例区域 us-east-1。
- Azure 列位置:az account list-locations -o table;示例 eastus。
- GCP 列区域:gcloud compute regions list。
3. 清单项与检查:
- 资产梳理:列出所有服务器、应用、数据库、存储与网络端口。建议使用 CMDB 导出 CSV。
- 性能基线:记录 CPU、内存、I/O、带宽在最忙时的 95th 值。
- 依赖关系:画出服务依赖图(应用到 DB、缓存、队列)。
4. 策略判定与对比:
- Lift-and-shift:快速,最少改动,使用快照/镜像迁移,适合短期迁移。
- Replatform:小幅修改以利用云服务(RDS、托管缓存),平衡成本与改造。
- Refactor:重构为云原生(容器、微服务),成本高但长期收益大。选择依赖业务窗口与预算。
5. VPC/VNet/项目设置:
- 建立目标网络:创建 VPC(AWS)、VNet(Azure)或 VPC(GCP),规划子网、路由、NAT。
- VPN/专线:若需私有链路,配置 AWS Direct Connect/Transit Gateway 或 Azure ExpressRoute,步骤含申请、对端配置和 BGP 对等。
- 安全组/NSG:按端口开放最小权限,启用流量日志。
6. 文件与对象数据同步:
- 小量文件:rsync -avzh /src/ user@target:/dest 或 scp。
- 大量对象到 S3:aws s3 sync /local/path s3://bucket --storage-class STANDARD --acl private。可加 --exclude/--include。
- 使用加速:S3 Transfer Acceleration 或第三方加速工具(Rclone、Aspera)。
7. 关系型数据库迁移:
- 规划停机窗小的方案:使用 DMS(AWS Database Migration Service)、Azure Database Migration Service 或 Cloud SQL 用迁移工具。
- 手工迁移示例(MySQL):mysqldump -u root -p --single-transaction --quick db > dump.sql;scp dump.sql 到目标,mysql -u root -p db < dump.sql。
- 增量同步:配置 binlog 或使用逻辑复制(Postgres:pg_dump + pg_restore 或 pglogical/replication slots)。
8. 部署与验证流程:
- 环境准备:在目标创建相同或兼容的运行时(相同 OS、依赖库、容器镜像)。
- CI/CD:把镜像推到目标容器仓库(docker push)并用 terraform/ARM/Deployment Manager 部署基础设施。
- 配置管理:用 Ansible/Cloud-Init/ARM 模板设定环境变量、秘密管理(AWS Secrets Manager、Azure Key Vault)。
9. 切换步骤与验证:
- 预先做彩排:在非高峰做一次完整切换演练并记录耗时。
- DNS 切换:降低 TTL 至 60s,切换 A/CNAME 到新 IP,监控流量。
- 回滚:保留旧环境至少一周期,记录快照与数据库备份,若新环境异常即刻将 DNS 回退并恢复写入。
10. 验证项与优化建议:
- 功能测试:接口调用、事务完整性、登录等端到端测试通过。
- 性能对比:用 ab/jmeter/vegeta 做压力测试,确认响应与吞吐符合基线。
- 成本优化:开启自动扩缩容(ASG/VMSS),评估 Reserved/Committed Use 折扣。
11. 工具清单与关键命令:
- 迁移工具:rsync, scp, aws s3 sync, rclone, DMS(AWS)、Azure DMS、Database Migration Service。
- 验证工具:ping/traceroute, curl, netstat, tcpdump, top, iostat, sar。
- 基础命令示例:aws ec2 create-vpc --cidr-block 10.0.0.0/16;az network vnet create --name myVnet --resource-group rg --address-prefix 10.0.0.0/16。
12. 问:当看到如 "us-east-1" 或 "eastus" 时,如何判断这是哪个云提供商的区域?
13. 答:通常 "us-east-1" 是 AWS 风格,"eastus" 是 Azure 风格,"us-central1" 常见于 GCP。快速方法:查看区域格式(连字符 vs 无连字符)并结合常见命名规则,或在 CLI 中执行相应列区域命令(aws ec2 describe-regions / az account list-locations / gcloud compute regions list)以确认。
14. 问:预算和开发资源有限的小型企业,应优先选择哪种迁移方式?
15. 答:通常建议先做 Lift-and-shift 快速迁移以降低风险,再分阶段 Replatform(用托管数据库等)优化成本与运维。关键是先保证业务可用,后续再按优先级重构最关键的组件。
16. 问:迁移后发现目标库与源数据库存在数据丢失或不一致,应该如何补救?
17. 答:首先暂停对目标的写入,启用源到目标的增量同步(binlog/逻辑复制),对比校验(checksum 对表或使用 pt-table-checksum),把差异导出并应用(pt-table-sync 或 mysqldump 增量),确认一致后再切换写流。并保留完整备份以便回滚。