100亿数据,非“双倍”扩容,如何不影响服务,数据平滑迁移?
步调一中日记里记录的,正是变革的数据。 步调三:研发一个读取日记并迁徙数据的小器材,要把步调二迁徙数据进程中发生的差别数据追平。这个小器材必要做的是: (1)读取日记,获得哪个库、哪个表、哪个主键产生了变革; (2)把旧库中对应主键的记录读取出来; (3)把新库中对应主键的记录替代掉; 无论怎样,原则是数据以旧库为准。 这个小器材的风险也很小: (1)整个进程依然是旧库对线上提供处事; (2)小器材的伟大度较低; (3)任何时刻发明题目,大不了从步调二开始重来; (4)可以限速逐步重放日记,技能同窗没偶然刻压力; 日记重放之后,就可以或许切到新库提供处事了么? 谜底依然是否认的,在日记重放的进程中,旧库中又也许稀有据产生了变革,导致数据纷歧致,以是照旧不能切库,必要进一步读取日记,追平记录。可以看到,重放日记追平数据的措施是一个while(1)的措施,新库与旧库中的数据追平也会是一个“无穷迫近”的进程。 什么时辰数据会完全同等呢? 步调四:在一连重放日记,追平数据的进程中,研发一个数据校验的小器材,将旧库和新库中的数据举办比对,直到数据完全同等。 这个小器材的风险仍旧很小: (1)整个进程依然是旧库对线上提供处事; (2)小器材的伟大度较低; (3)任何时刻发明题目,大不了从步调二开始重来; (4)可以限速逐步比对数据,技能同窗没偶然刻压力; 步调五:在数据比对完全同等之后,将流量迁徙到新库,新库提供处事,完成迁徙。 假如步调四数据一向是99.9%的同等,不能完全同等,也是正常的,可以做一个秒级的旧库readonly,等日记重放措施完全追上数据后,再举办切库切流量。 至此,进级完毕,整个进程可以或许一连对线上提供处事,不影响处事的可用性。 方案三:双写方案 双写方案,也是一个高可用的滑腻迁徙方案,这个方案首要分为四个步调。 数据迁徙前,上游营业应用通过旧的处事会见旧的数据。 步调一:处事举办进级,对“对旧库上的数据修改”(这里的修改,为数据的insert, delete, update),在新库长举办沟通的修改操纵,这就是所谓的“双写”,首要修改操纵包罗: (1)旧库与新库的同时insert; (2)旧库与新库的同时delete; (3)旧库与新库的同时update; 因为新库中此时是没稀有据的,以是双写旧库与新库中的affect rows也许纷歧样,不外这完全不影响营业成果,只要不切库,依然是旧库提供营业处事。 这个处事进级风险较小: (1)写接口是少数接口,窜改点较少; (2)新库的写操纵执行乐成与否,对营业成果没有任何影响; 步调二:研发一个数据迁徙器材,举办数据迁徙。这个数据迁徙器材在本文中已经呈现第三次了,把旧库中的数据转移到新库中来。 这个小器材的风险较小: (1)整个进程依然是旧库对线上提供处事; (2)小器材的伟大度较低; (3)任何时刻发明题目,都可以把新库中的数据干掉重来; (4)可以限速逐步迁徙,技能同窗没偶然刻压力; 数据迁徙完成之后,就可以或许切到新库提供处事了么? 谜底是必定的,由于前置步调举办了双写,以是理论上数据迁徙完之后,新库与旧库的数据应该完全同等。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |