从阿里云/华为云迁到腾讯云:踩过的10个坑及解决方案

2026-05-03 · AI云服务实战笔记

上个月帮一个客户把服务从阿里云迁到腾讯云。以为两天就能搞定,实际搞了一周。记下踩过的坑,下次不用再交学费了。

整体迁移流程

  1. 在腾讯云创建对应资源(服务器、数据库、存储等)
  2. 部署应用代码和环境
  3. 同步数据库(先全量再增量)
  4. 同步文件存储
  5. 迁移SSL证书
  6. 配置监控告警
  7. 不切DNS,先验证
  8. 验证通过后切换DNS

坑1:DNS切换导致服务中断了15分钟

即使DNS TTL设到60秒,国内运营商的DNS缓存刷新也要5-15分钟。切换A记录的瞬间,新旧服务器各收到一半流量,数据库出现了脏数据。

正确做法:先不切DNS,用本地hosts或临时域名验证新服务器一切正常。确认无误后,选凌晨低峰期切换。切之前把原服务器的数据库设为只读,避免双写。

坑2:数据库迁移用了全量导出导入,丢了自增ID

用mysqldump导出再导入,发现自增ID对不上(因为导入顺序问题)。应用代码里硬编码的ID全炸了。

正确做法:用DTS(数据传输服务)做在线迁移,从源库实时同步到目标库。DTS保证数据一致性和自增ID。腾讯云DTS支持阿里云MySQL作为源。

坑3:SSL证书忘了迁移,HTTPS挂了

迁移完成后打开网站发现浏览器报警"不安全"。原来阿里云的免费SSL证书没导出来。

解决:在腾讯云重新申请免费SSL证书(和阿里云一样也是TrustAsia的),或者从原始CA重新签发。记得同时更新CDN上的证书。

坑4:内网IP变更导致服务发现失效

原阿里云用了ECS内网IP做服务发现(比如Redis地址写的10.x.x.x)。迁到腾讯云后内网IP全换了,所有微服务找不到Redis。

教训:微服务间通信永远用域名或服务发现组件(Consul/Nacos),不要硬编码IP。

坑5:对象存储的URL硬编码在数据库里

数据库里存了几十万条记录,里面有阿里云OSS的URL(oss-cn-hangzhou.aliyuncs.com)。迁移后这些URL全失效。

解决:先在COS创建相同路径结构,批量迁移文件。然后写脚本替换数据库中的域名:OSS域名 → COS域名。迁移后双写一段时间两个存储,确保所有旧链接都不报404。

坑6:监控告警全部重建

阿里云的云监控规则在腾讯云不通用。CPU阈值、内存告警、日志告警全部要从头配。搞了整整一个下午。

建议:用第三方监控(Prometheus + Grafana),不绑定云厂商。一次配置,到处通用。

坑7:安全组规则没对齐

阿里云的安全组默认允许同VPC内互访。腾讯云的安全组需要显式配置。迁移后微服务之间全不通,排查了一个小时才发现是安全组的问题。

坑8:定时任务(crontab)没迁移

在旧服务器上配了很多crontab任务:数据清理、报表生成、缓存预热。迁移时完全忘了这回事,上线后第三天才发现报表没更新。

建议:迁移前导出一份完整的crontab清单:crontab -l > crontab_backup.txt

坑9:时区问题导致业务逻辑错误

阿里云ECS镜像默认时区是CST(Asia/Shanghai),腾讯云有些镜像默认是UTC。数据库存的时间是UTC,前端显示差8小时。

统一设置:timedatectl set-timezone Asia/Shanghai,应用代码里也显式指定时区。

坑10:流量先切了一点但忘了切回去,丢了半天数据

做灰度切流时,把20%流量切到新服务器测试,但忘了回调。这20%流量产生的数据只在新服务器上,切换回去后对不上。

铁律:灰度切换一定要设自动回滚机制。如果30分钟没有手动确认,自动回滚。

迁移经验总结:小项目迁移大概2-4小时能搞定;中型项目(多服务器+数据库+CDN)预留1-2天;大型项目可能需要1-2周。如果你在阿里云上绑定了很多云产品(RDS、OSS、SLS等),迁移前先考虑一下:GPU价格差异能不能覆盖迁移成本?如果不能,换不换差别不大。

返回首页