先把目标说清楚。是扩容太慢、硬件快到保修期,还是故障恢复耗时太长,问题不同,迁移的优先级和方案也不同。目标最好写成能检查的条目,比如发布周期缩到小时级,或者可用性达到某个具体数字。哪些系统必须迁,哪些可以先放着或直接下线,也要在这一步定下来。

资产盘点要做细
盘点是最容易被低估的环节。需要记录的包括操作系统版本、CPU与内存配置、磁盘容量和挂载方式、运行的服务与端口、定时任务、数据库和缓存依赖,以及与外部系统的调用关系。很多团队迁完才发现,某台不起眼的服务器其实负责每天的对账任务,或者某个域名还指向旧IP。这类问题基本都是盘点时漏掉的。
建议把结果整理成表格,逐项标注负责人、迁移优先级和风险等级。这份清单迁移完之后还能继续用,算是后面运维的基线。
选择迁移方式
常见做法大致有三种。整机迁移是用镜像或快照把系统整体搬过去,适合结构简单、改动少的服务。重新部署是在云上按新规范搭环境,再把应用和数据迁过去,适合历史包袱重、又想顺便调整架构的项目。分阶段迁移则是先迁无状态的应用,再迁数据库这类有状态的组件,单次切换的风险会小很多。
选哪种,主要看三件事:业务能接受多长停机,数据量有多大,团队对目标环境熟不熟。如果团队对云上环境还不熟,宁可慢一点,也别在割接当天同时学新东西。
割接当天最容易出问题的几步
割接是真正动手的那几个小时,也是最容易翻车的时候。下面这个场景比较典型,可以当作参考。
某中型电商团队原本在自建机房跑商品服务、订单服务和一台MySQL主库,十多台服务器。大促时经常扩容不及时,页面卡顿,硬件保修也快到期了。他们分三步走。第一步用两周做资产盘点,发现两台服务器还跑着已停用的旧接口,直接下线,迁移范围因此缩小。第二步在腾讯云上搭起与原环境一致的VPC网络,先迁无状态的商品和订单应用,用负载均衡把一部分流量切过去,观察了一周的响应时间和错误率。第三步,数据库走主从同步,在业务低峰期完成全量加增量的数据同步,凌晨做了一次短暂的读写切换。
割接当天,有几个点特别值得提前想好。
- 数据同步要留足时间。大表和写入频繁的业务库,增量追平往往比预想慢,切换窗口最好预留一倍时间。
- 回滚方案要提前演练。旧库保持只读,DNS的TTL提前调低,这样真出问题时才能在几分钟内切回去。没演练过的回滚,到了现场大概率手忙脚乱。
- 环境细节容易被忽略,比如系统时区、字符集、定时任务的执行时区。这些不一致,表面上看服务能跑,数据却会悄悄错位。
- DNS和代码里硬编码的IP要逐一核对。切换后仍有请求打到旧环境,是很常见的尾巴问题。
这次切换耗时约二十分钟,业务中断控制在可接受范围内。切换前后,团队重点做了核心接口的功能测试、关键数据的一致性比对、日志与告警是否正常,以及第三方回调能否正常到达。旧环境保留了一段时间,确认无误后才统一下线。
迁移后的成本和监控
迁完不等于结束。云上资源是按需用的,如果只是把物理机原样搬过去,成本未必会降。可以根据实际负载调整实例规格,非核心业务换成更省钱的计费方式,定期清理闲置的云硬盘和快照,并给关键服务配好监控和告警。之后团队借助弹性伸缩应对大促,运维人力也从救火慢慢转向优化监控。
安全这块也要重新过一遍。安全组规则、账号权限和密钥管理很容易沿用旧环境里过于宽松的配置,迁移时顺手收紧,比事后补救省事得多。监控、备份和日志采集如果没有同步更新,云上很快就会出现新的运维盲区。
如果团队人手有限,可以先挑一个非核心系统试点,把盘点、切换、回滚的流程走一遍,再推进核心业务。第一次做完,后面的割接会顺很多。