加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

100亿数据,非“双倍”扩容,如何不影响服务,数据平滑迁移?

发布时间:2019-07-29 19:02:43 所属栏目:编程 来源:58沈剑
导读:前次《百亿级数据DB秒级滑腻扩容!》之后,许多伴侣提问,说假如不是双倍扩容,可否做到滑腻迁徙,不影响处事呢? 合用什么场景? 互联网有很大都据量较大,并发量较大,营业伟大度较高的营业场景,其典范体系分层架构如下: (1)上游是营业层biz,实现本性化

因为迁徙数据的进程中,旧库新库双写操纵在同时举办,怎么证明数据迁徙完成之后数据就完全同等了呢?

100亿数据,非“双倍”扩容,怎样不影响处事,数据滑腻迁徙?

如上图所示:

(1)左侧是旧库中的数据,右侧是新库中的数据;

(2)凭证primary key从min到max的次序,分段,限速举办数据的迁徙,假设已经迁徙到now这个数据段,数据迁徙进程中的修改操纵别离接头:

假设迁徙进程中举办了一个双insert操纵,旧库新库都插入了数据,数据同等性没有被粉碎

假设迁徙进程中举办了一个双delete操纵,这又分为两种环境

环境一:假设这delete的数据属于[min,now]范畴,即已经完成迁徙,则旧库新库都删除了数据,数据同等性没有被粉碎;

环境二:假设这delete的数据属于[now,max]范畴,即未完成迁徙,则旧库中删除操纵的affect rows为1,新库中删除操纵的affect rows为0,可是数据迁徙器材在后续数据迁徙中,并不会将这条旧库中被删除的数据迁徙到新库中,以是数据同等性仍没有被粉碎;

假设迁徙进程中举办了一个双update操纵,可以以为update操纵是一个delete加一个insert操纵的复合操纵,以是数据如故是同等的

除非,在一种很是极限的环境下:

(1)date-migrate-tool恰恰从旧库中将某一条数据X取出;

(2)在X插入到新库中之前,旧库与新库中恰恰对X举办了双delete操纵;

(3)date-migrate-tool再将X插入到新库中;

这样,会呈现新库比旧库多出一条数据X。

但无论怎样,为了担保数据的同等性,切库之前,照旧必要举办数据校验的。

100亿数据,非“双倍”扩容,怎样不影响处事,数据滑腻迁徙?

步调三:在数据迁徙完成之后,必要行使数据校验的小器材,将旧库和新库中的数据举办比对,完全同等则切合预期,假如呈现步调二中的极限纷歧致环境,则以旧库中的数据为准。

这个小器材的风险仍旧很小:

(1)整个进程依然是旧库对线上提供处事;

(2)小器材的伟大度较低;

(3)任何时刻发明题目,大不了从步调二开始重来;

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读