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。 但无论怎样,为了担保数据的同等性,切库之前,照旧必要举办数据校验的。 步调三:在数据迁徙完成之后,必要行使数据校验的小器材,将旧库和新库中的数据举办比对,完全同等则切合预期,假如呈现步调二中的极限纷歧致环境,则以旧库中的数据为准。 这个小器材的风险仍旧很小: (1)整个进程依然是旧库对线上提供处事; (2)小器材的伟大度较低; (3)任何时刻发明题目,大不了从步调二开始重来; (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |