這篇文章主要講解了“基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么”吧!
10年積累的成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先做網(wǎng)站設計后付款的網(wǎng)站建設流程,更有延吉免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
新舊系統(tǒng)都是基于Mycat分片,舊系統(tǒng)有12個分片,新系統(tǒng)有8個分片;由于新系統(tǒng)是重構(gòu),目前只對其中一種會員的賬戶類型(會員主錢包,相當于余額寶)進行重構(gòu),剩余的果幣、積分、優(yōu)惠券就在后續(xù)的迭代中慢慢重構(gòu)。
單算主錢包的話,用戶信息大約5千萬,主錢包賬戶信息大約在5千萬,流水大約在8千萬左右。涉及的表有三張,就稱為user_info和account_info表和account_record表,對應到新系統(tǒng)也是這兩三表,差別是里面的數(shù)據(jù)需要做轉(zhuǎn)換。如圖,老系統(tǒng)是基于old_user_id分片,新系統(tǒng)是基于new_user_id分片
兩邊系統(tǒng)都是基于Mycat進行分片,遷移程序如果是通過mycat連接數(shù)據(jù)庫的話,速度會稍慢;就打算通過直連各個分片進行遷移,但是由于兩邊的分片數(shù)不同和分片的字段不一樣,通過直連的方式遷移到新系統(tǒng)時需要自己寫分片規(guī)則。
如圖直連的方式,從舊系統(tǒng)讀取一批數(shù)據(jù)時需要計算出具體落到新系統(tǒng)的哪個分片,為了減少實現(xiàn)復雜度和正式遷移時出現(xiàn)問題能快速定位,所以采用了另一種方式。舊系統(tǒng)采用直連12個分片,寫入到新系統(tǒng)時通過mycat,規(guī)則的計算由Mycat處理。
為了提高速度,毫不猶豫的選擇了多線程的方案,一開始想到的就是基于隊列的方式,一邊讀一邊寫兩不誤;舊系統(tǒng)總共12個分片,每次開啟多個線程讀取一個分片的數(shù)據(jù)放進阻塞隊列,同時多個線程從隊列取數(shù)據(jù)并組裝再通過Mycat寫入新系統(tǒng)。直到一個分片的數(shù)據(jù)讀取完再讀取下一個分片。
優(yōu)點:讀取速度快
缺點:寫入慢,造成消息堆積,內(nèi)存不足,導致GC頻繁,速度變慢。
由于遷移的服務器是8核32G,所以只開啟8個線程分別去讀取12個分片的數(shù)據(jù),同個線程里同步讀寫數(shù)據(jù)。如圖,步驟如下,基于該方案,用戶和賬戶數(shù)據(jù)的遷移時間大約為26分鐘左右。
將舊系統(tǒng)12個分片放進阻塞隊列。
每個線程開始時從隊列拿一個分片數(shù)據(jù)源,通過直連的方式
分頁讀取,每批次大約5000條,組裝數(shù)據(jù)后通過新系統(tǒng)的mycat插入數(shù)據(jù)
直到最后一批數(shù)據(jù)小于5000條時,認為該分片的數(shù)據(jù)已經(jīng)讀取完畢
讀取完畢后該線程進行分片切換,即重新到隊列拿取新的分片,如果隊列的分片為空,則線程退出,否則重復1-4
感謝各位的閱讀,以上就是“基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!
本文名稱:基于賬戶系統(tǒng)做數(shù)據(jù)庫數(shù)據(jù)遷移的方法是什么
網(wǎng)頁鏈接:http://aaarwkj.com/article6/iijoig.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、云服務器、面包屑導航、ChatGPT、服務器托管、App設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)