大数跨境
0
0

亿级数据平滑迁移

亿级数据平滑迁移 二进制跳动
2020-06-18
1
导读:亿级数据平滑迁移

随着网站的发展,原有的2个数据库,访问的用户通过取模的方式均衡到两个库中,不过现在已经支撑不住数据量了,我们需要更坏数据结构或者新增数据库实例,那么我们是怎么来做数据迁移的呢?

这里我们分享两种方式:

(1)停机方案

 1、我们先在网站的首页来出一个公告:我们准备进行升级,大概需要XX小时之类的停止服务的公告。

2、写一个迁移的程序,将原来2个数据库的数据拆分到4个数据库(2+2)

3.数据迁移完成,将连接数据库的配置修改

4.重启服务,重新对外开启服务。

这其实不是今天的重点,但是这种方法在很多企业是用的比较平凡的,我们自己就是这么做的,相对于还是比较简单的,但是也有弊端,需要停服,用户感知不好。而且需要在规定的时间内,我们大多数是在夜里,对同学的们身心考验还是比较大的(以前公司都是每周一次升级都是在夜里,回到家的时候都是早晨了),因为时间越短,出错的可能性就越高。

(2)平滑、秒级、不停服

我们以前用过双写的方案:

数据迁移前,上游业务应用通过旧的服务访问旧的数据。

步骤1:服务(service-old->service-new行升级对旧库上的数据修改,在新库上同样进行修改,包括 insert、delete、update,这就是"双写"

步骤二:研发一个数据迁移工具,把就数据库里的数据迁移到新的数据库。这个过程还是旧库对线上对接服务,可以限速慢慢迁移,技术同学压力不是很大。迁移完成之后,理论上就可以切换到新库上对外服务了。不过在切库之前,我们需要判断数据的一致性,对数据进行校验。

步骤三:当数据完全一致后,将流量切到新库,完成了平滑数据迁移。


总结一下:

1服务进行升级,“对旧库上的数据修改”进行新库的重复写,也就是所谓的“双写”

2)研发一个数据迁移小工具(需要深思),进行数据迁移;

3)研发一个数据比对小工具(需要琢磨)校验数据一致性(考虑下while(1)持续比较);

4)流量切到新库,完成平滑迁移;


◤好像今天一个图都没有,显得很单调!◥


下集预告:双倍扩容如何做?停服和不停服







【声明】内容源于网络
0
0
二进制跳动
15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
内容 739
粉丝 0
二进制跳动 15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
总阅读117
粉丝0
内容739