[TOC]
背景
随着业务的快速发展和技术架构的演进,许多企业需要将其现有的系统迁移到新的基础设施上。这种迁移不仅涉及到应用服务的重新部署,更重要的是要确保数据的安全、完整迁移。本文档分享了一套经过实践验证的系统数据迁移方案,涵盖了资源评估、部署策略、迁移步骤和验证方法等关键环节。
一、资源评估
1.1 现有环境资源分析
在进行迁移之前,首先需要对现有系统的资源情况进行全面评估,包括:
1.1.1 中间件资源
调研+预估
本系统使用的中间件
| 序号 | 中间件 | 线上 | 预估内存 | 备注 |
|---|---|---|---|---|
| 1 | mysql | 略 | 300 张表 | |
| 2 | mongo | |||
| 3 | Rocketmq-Namesrv | |||
| Rocketmq-broker | ||||
| 4 | rocketmq-console | 临时用 | ||
| 5 | redis | |||
| 6 | Redis-insight | 临时用 | ||
| 7 | es | |||
| 8 | Xxl-job | |||
| 9 | nacos | |||
| 10 | nginx | |||
| 11 | Prometheus | |||
| 12 | AlertManager | |||
| 13 | PrometheusAlert | |||
| 14 | dozzle | 临时用 | ||
| 15-20 | exporter | 监控挂没挂 |
1.1.2 应用服务资源
| 应用类型 | 线上环境 | 预估内存 |
|---|---|---|
| 服务 1 | 略 | |
| 服务 2 | ||
| 服务 3 |
1.1.3 系统流量分析
统计近段时间及波峰流量:
| 日期 | 次/天 | avg/分 | top90/分 | max/分 | avg/秒 | top90/秒 | max/秒 |
|---|---|---|---|---|---|---|---|
| 略 |
1.2 资源预估
1.2.1 流量预估
按峰值的 2 倍计算
1.2.2 带宽需求
计算带宽需求
1.2.3 部署方案选择
| 方案 | 描述 | 机器配置 | 适用场景 |
|---|---|---|---|
| 单节点部署 | 所有应用/中间件部署在单个机器上 | 根据上面预估内存评估 | 测试环境、低流量场景 |
| 最小高可用 | 分布式部署保证服务可用性 | 根据上面预估内存评估 | 生产环境、高可用要求 |
最小高可用部署拓扑:
- Nginx + IP漂移实现负载均衡
- API双节点部署
- MySQL主从架构 + MHA/Orchestrator
- Redis集群
- MongoDB主副本集 + 仲裁节点
- Elasticsearch集群
二、应用部署策略
2.1 环境部署流程
采用分阶段部署策略:
| 阶段 | Nginx | MySQL | MongoDB | MQ | Redis | ES | 任务调度 | 配置中心 | 监控 | 应用 | 备注 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | - | - | 1 | - | 直接安装基础组件,MySQL配置为从库 |
| 2 | - | - | - | - | - | - | - | - | - | 1 | 部署应用层,修改配置指向新环境 |
| 3 | - | - | - | - | - | - | - | - | - | 1 | 功能验证 |
| 4 | 1 | - | - | - | - | - | - | - | - | - | 流量切换 |
| 5 | - | - | - | - | - | - | - | - | - | 1 | 验证应用功能 |
| 6 | - | 1 | - | - | - | - | - | - | - | 1 | MySQL切换为主库,应用重启 |
| 7 | - | - | - | - | - | - | - | - | - | 1 | 功能验证 |
| 8 | - | 1 | - | - | - | - | 1 | 1 | - | - | 清理数据,部署调度和配置服务 |
| 9 | - | - | - | - | - | - | 1 | - | - | 1 | 连接新配置中心,验证功能 |
| 10 | - | - | - | - | - | - | - | - | 1 | - | 安装监控组件,可以前挪 |
2.2 数据库主从切换方案
由于数据库主从切换会导致服务中断,提供三种解决方案:
- 双实例方案:部署两个API实例,一个连接旧主库,一个连接新主库。先全部流量指向旧实例,切换时停服并切换数据库主从,然后将流量切换到新实例。
- 代理方案:使用HAProxy等代理工具代理到主库,切换时切断连接,完成主从切换后更新代理配置。
- 停服重配方案:直接停服,修改应用配置连接新主库后重启。
三、测试验证
3.1 测试环境验证
在测试环境中进行全面的功能验证,确保所有服务正常运行。
3.2 线上环境验证
采用灰度发布策略,通过OpenResty+Lua控制特定流量走向新环境进行验证。
四、流量迁移
流程如图:
初始
阶段一:搭建从库+新应用连老库 可分流验证新部署应用功能
线上流量迁移采用渐进式方式,可选择一刀切或按比例逐步切换,确保业务连续性。
阶段二:短暂停服+断开主从
阶段三:连新库
五、后置操作
迁移完成后,需要清理旧环境的数据和资源,确保系统整洁。
总结
本方案提供了一套完整的数据迁移实施指南,通过详细的资源评估、合理的部署策略和分阶段的迁移步骤,能够有效降低迁移风险,确保业务平稳过渡。在实际实施过程中,应根据具体业务特点和风险承受能力调整相关策略。