首页 > 其他分享 >记一次线上动态数据迁移经历

记一次线上动态数据迁移经历

时间:2023-01-16 16:13:11浏览次数:41  
标签:服务 域名 线上 切流 迁移 动态数据 数据

一、背景

平台重构上线以后需要面临新老服务切流以及新老数据库数据迁移。

二、目标

做到接近零停机时间完成生产环境数据迁移,保证生产环境数据零丢失,并且迁移完成后新服务能够正常运转。

三、价值

在新老服务线上数据库数据迁移过程中能够尽可能保证服务可用性,避免数据迁移造成线上服务长时间不可用带来的损失。

四、整体方案设计

待迁移的数据基本分为两类,一类是静态(始终不变或变化很小)数据,这类变化很小的数据,通过新增服务开关的方式控制写流量短时间内不让进来,来达到新老数据一致性;一类是动态(比如任务表,始终会有源源不断的流量进来)数据;静态数据迁移很简单,这里就不过多赘述,下面重点将动态数据迁移,迁移流程如下:

1、新服务线上sql脚本和es初始化

2、导出老服务全量数据(db和es),并记录时间点,记为t1时刻

3、迁移全量数据(db和es)

4、新服务上线

5、老服务加入切流功能后上线,切流开关默认关闭

6、灰度发布

1)新服务以测试域名上线,跟目前线上的老服务同时运行

2)打开切流开关,通过apollo配置让一小部分测试商户切流到新服务测试域名,试运行一段时间,测试商户切流时间点选择:测试商户流量最小的时刻

3)新服务稳定后将老服务域名slb解析到新服务域名slb上,老服务下线,切流完成,记为t2时刻,只运行新服务,完成新服务正式发布。

切流方案:

左边为老服务,右边为新服务,mq用的是RocketMQ

7、增量数据迁移

查询全量数据迁移t1时刻和切流完成的t2时刻,这段时间内老服务新增或更新的数据并迁移到新服务

至此,整个线上数据动态迁移完成。  

标签:服务,域名,线上,切流,迁移,动态数据,数据
From: https://www.cnblogs.com/peijian/p/17055657.html

相关文章