1.
迁移前的评估与准备
资产盘点:列出网站代码、依赖、数据库、静态文件、证书、第三方依赖及流量峰值。确定业务可容忍的停机时间和数据一致性要求(如是否需要零停机)。备份:在现网做一次完整备份(备份代码、数据库快照、存储桶),并验证可恢复性。
2.
选择香港区域与架构设计
选择区域:AWS 香港是 ap-east-1。根据流量与延迟决定是否只用香港区域或混合多区。设计组件:EC2(计算)、RDS/Aurora(数据库)、EBS(磁盘)、S3(静态)、ELB/ALB(负载均衡)、Route53(DNS)、CloudFront(加速)。
3.
账户与权限准备(IAM)
创建IAM用户与角色:为迁移工程师创建具有限权的IAM用户,使用MFA。准备EC2角色以访问S3或SSM。启用CloudTrail与Config以满足审计需求。
4.
网络与安全组配置(VPC)
建立VPC、子网、公私网分离。为Web服务器建公有子网,为数据库建私有子网。创建安全组:仅开放必要端口(80/443对外,22仅限管理IP,数据库仅允许后端访问)。建议配置NAT网关、Flow Logs和Bastion主机或Session Manager。
5.
创建实例与磁盘(EC2/EBS)
挑选实例类型(t3/m5/g4等根据CPU/内存/GPU需求)。通过控制台或CLI创建实例:示例CLI:aws ec2 run-instances --image-id ami-xxxxx --count 1 --instance-type t3.medium --key-name mykey --security-group-ids sg-xxx --subnet-id subnet-xxx。创建并挂载EBS,格式化并挂载到/var/www或指定目录。
6.
部署代码与静态文件迁移
静态文件:若大文件建议先同步到S3,命令示例:aws s3 sync /var/www/static s3://my-bucket --acl private。代码同步:使用rsync或构建Pipeline。示例:rsync -avz --delete /var/www/ ubuntu@HK_EC2_IP:/var/www/。若使用CI/CD,配置在香港区域的Runner或部署目标。
7.
数据库迁移策略
小库离线迁移:停止写操作,mysqldump导出并导入。示例:mysqldump -uroot -p --single-transaction --routines --triggers dbname | gzip > db.sql.gz,然后scp到目标并导入。大库或零停机:使用AWS DMS或MySQL主从复制。配置RDS/Aurora在ap-east-1,新建目标实例,使用DMS创建迁移任务并进行全量+增量复制,验证一致性后切换写主。
8.
SSL证书与域名配置
若使用ALB/CloudFront,可在AWS Certificate Manager(ACM)申请证书(仅限AWS资源使用)。若使用自建Nginx/Apache,scp上传证书并配置。提前在DNS上将TTL降到较低值(比如60s)以便切换时快速生效。
9.
负载均衡与自动伸缩(可选)
创建ALB并添加目标组,配置健康检查(HTTP 200)。配合Auto Scaling Group设置最小/期望/最大实例数及扩展策略。提前测试滚动部署与健康恢复。
10.
切换流程(演练与正式切换)
演练:先在非高峰期进行一次完整演练。切换步骤示例:1) 将源站TTL降低;2) 将应用以只写或维护模式;3) 最后一次增量同步(rsync或binlog);4) 切换DNS到Route53或指向新的弹性IP/ELB;5) 监测错误日志与业务指标。确认无误后恢复正常TTL。
11.
回滚与应急方案
回滚准备:保留原服务器至少一段时间,保留最后快照与备份。若新环境故障,快速将DNS回指原IP/ELB或恢复RDS快照。事先演练回滚,记录回滚命令与责任人。
12.
监控、备份与优化
启用CloudWatch监控CPU/内存/磁盘/网络、设置告警。配置定期EBS快照与RDS自动备份,S3生命周期与跨区复制(若需要)。按需优化:开启HTTP/2、GZIP、数据库索引调优、使用缓存(Redis/ElastiCache)。
13.
安全加固与合规注意
禁用root远程登录,使用SSH Key并限制来源IP,开启OS与应用自动补丁,部署WAF与安全组白名单。注意香港地区法律与数据主权要求,若涉及敏感数据评估是否需要加密落地和合规认证(如ISO/PCI等)。
14.
成本与网络延迟考量
估算费用:计算实例、存储、数据传输和备份成本。香港出口带宽与跨区流量有费用,监控带宽峰值以免账单异常。若面向全球用户,建议配合CloudFront减少延迟并节约源站带宽。
15.
常见问题一:迁移会导致长时间停机吗?
问:如何把停机时间降到最小? 答:通过使用增量复制(如MySQL主从或AWS DMS)先完成全量同步,切换时只需导入最后的binlog或做一次小范围同步,配合降低DNS TTL与短时间维护模式,可将停机时间缩短到分钟级。
16.
常见问题二:数据一致性如何保证?
问:迁移后如何校验数据一致性? 答:使用校验工具(pt-table-checksum或DMS内置校验)对比源库与目标库行数与校验和,检查重要业务表的关键记录;在切换前保证binlog已完全同步并完成最后一次一致性校验。
17.
常见问题三:DNS切换出问题如何快速恢复?
问:DNS切换失败时如何回滚? 答:提前将DNS TTL降到低值,切换时保存原记录与TTL,若回滚只需将记录改回原IP/ELB并再次降低TTL,因TTL短,全球生效快;同时维持原服务器可写以便快速恢复数据同步。
来源:如何迁移现网到亚马逊云服务器有香港的步骤与注意事项