溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么

發(fā)布時間:2021-11-16 14:32:47 來源:億速云 閱讀:110 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么”吧!

    1. 新舊系統(tǒng)的數(shù)據(jù)庫分析

    新舊系統(tǒng)都是基于Mycat分片,舊系統(tǒng)有12個分片,新系統(tǒng)有8個分片;由于新系統(tǒng)是重構(gòu),目前只對其中一種會員的賬戶類型(會員主錢包,相當(dāng)于余額寶)進行重構(gòu),剩余的果幣、積分、優(yōu)惠券就在后續(xù)的迭代中慢慢重構(gòu)。

    單算主錢包的話,用戶信息大約5千萬,主錢包賬戶信息大約在5千萬,流水大約在8千萬左右。涉及的表有三張,就稱為user_info和account_info表和account_record表,對應(yīng)到新系統(tǒng)也是這兩三表,差別是里面的數(shù)據(jù)需要做轉(zhuǎn)換。如圖,老系統(tǒng)是基于old_user_id分片,新系統(tǒng)是基于new_user_id分片

基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么

    2. 采用的線程模型及演進

    2.1 程序連接數(shù)據(jù)庫方式

    兩邊系統(tǒng)都是基于Mycat進行分片,遷移程序如果是通過mycat連接數(shù)據(jù)庫的話,速度會稍慢;就打算通過直連各個分片進行遷移,但是由于兩邊的分片數(shù)不同和分片的字段不一樣,通過直連的方式遷移到新系統(tǒng)時需要自己寫分片規(guī)則。

基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么

    如圖直連的方式,從舊系統(tǒng)讀取一批數(shù)據(jù)時需要計算出具體落到新系統(tǒng)的哪個分片,為了減少實現(xiàn)復(fù)雜度和正式遷移時出現(xiàn)問題能快速定位,所以采用了另一種方式。舊系統(tǒng)采用直連12個分片,寫入到新系統(tǒng)時通過mycat,規(guī)則的計算由Mycat處理。

基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么

    2.2 通過隊列方式,多線程讀,多線程寫

    為了提高速度,毫不猶豫的選擇了多線程的方案,一開始想到的就是基于隊列的方式,一邊讀一邊寫兩不誤;舊系統(tǒng)總共12個分片,每次開啟多個線程讀取一個分片的數(shù)據(jù)放進阻塞隊列,同時多個線程從隊列取數(shù)據(jù)并組裝再通過Mycat寫入新系統(tǒng)。直到一個分片的數(shù)據(jù)讀取完再讀取下一個分片。

    優(yōu)點:讀取速度快

    缺點:寫入慢,造成消息堆積,內(nèi)存不足,導(dǎo)致GC頻繁,速度變慢。    基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么

    2.3 以分片的維度切割線程,同個線程同步讀寫(以讀取用戶信息和賬戶信息為例)

    由于遷移的服務(wù)器是8核32G,所以只開啟8個線程分別去讀取12個分片的數(shù)據(jù),同個線程里同步讀寫數(shù)據(jù)。如圖,步驟如下,基于該方案,用戶和賬戶數(shù)據(jù)的遷移時間大約為26分鐘左右。

  1. 將舊系統(tǒng)12個分片放進阻塞隊列。

  2. 每個線程開始時從隊列拿一個分片數(shù)據(jù)源,通過直連的方式

  3. 分頁讀取,每批次大約5000條,組裝數(shù)據(jù)后通過新系統(tǒng)的mycat插入數(shù)據(jù)

  4. 直到最后一批數(shù)據(jù)小于5000條時,認為該分片的數(shù)據(jù)已經(jīng)讀取完畢

  5. 讀取完畢后該線程進行分片切換,即重新到隊列拿取新的分片,如果隊列的分片為空,則線程退出,否則重復(fù)1-4

基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么

感謝各位的閱讀,以上就是“基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI