使用datax遷移資料的一些感想

2021-10-07 03:47:34 字數 1085 閱讀 8912

專案上最近經常從gbase8a往mysql抽取資料業務,抽取過程屬於離線操作,遇到記錄條數最多的業務表有30多億條記錄,磁碟空間占用最大的表有170gb(3億多條記錄),整個過程都還是比較順利,遇到的主要問題是資料如何均勻切片問題?下面記錄一條遷移的思路與思考

gbase8a多節點集群

mysql5.6.46

1、按業務表記錄數進行排序操作,小表直接批量遷移。

2、大表按時間欄位或rowid來進行切片遷移

遷移思路挺簡單的,那有沒有問題呢,有一句話講得好理想狀態與現實情況存在差異,這個差異就是問題,有問題就需要我們思考與分析,盡最大努力讓遷移的過程如絲般順滑。

1、判斷小表的依據呢?為什麼要按記錄數進行統計呢,而不加上表size來一起來判斷這個表是小表呢

2、大表中只有部分記錄的時間欄位有值,大部分記錄的時間字段沒有值,這種情況怎麼辦呢?

3、通過rowid切片來遷移,rowid是gbase8a自帶的列,起值為0,每增加一條記錄rowid加1,正常情況下最大的rowid+1就是表的記錄數,那麼一張表在8a集群中rowid 是怎麼分布呢,通過rowid來遷移可行嗎,在哪些情況下可行,存在什麼問題,是不是對所有表都可以按rowid進行切片遷移?,切片切多大合適,大了會對遷移造成什麼影響?

4、遇到最大rowid比表記錄異常大,怎麼處理?遇到最大rowid比表記錄異常小怎麼處理?

1、通過datax遷移時,小表的判斷方式是按datax一次預設分配的記憶體來計算的,但這裡判斷小表通常通過行數來判斷,當前也可以實現基於表大小來估計,但需要對每張表單獨評估

(畫外音:只有對錶的唯讀許可權)

2、遇到不少這樣只有部分記錄的時間欄位有值的大表,這種情況可以基於rowid切片

3、所有的表都可以基於rowid來進行遷移,比較繁瑣的事每個大表都需要單獨處理,切片大小很難統一

1、資料遷移過程總會遇到很多問題,這裡遇到最多的就是記憶體溢位問題,所以合適的切片大小很重要

2、基於rowid記憶體溢位後,怎麼能接著繼續同步,類似斷點續傳功能,這點指令碼沒有實現該功能

3、基於rowid切好片後發現某個切片範圍有資料,但datax執行到這個切片範圍時長時間查詢不到資料(單通道執行2020/10/02)。

初學SuperMap Object的一些感受

本人第一次接觸supermap object,我把這段時間裡的感受寫出來讓大家體會一下,這是我第一次在寫文章,寫得不好,請見諒,也請大家指點指點。在這之前,先了解什麼是元件式gis。gis geographic information system是一種對空間資料進行處理的乙個工具。它縮短了對空間資...

關於資料遷移的一些經驗總結

前言 因為前段時間做專案管理,涉及到資料遷移的的內容,經過深入的研究實踐,總結了一些淺見的經驗,分享給熱愛程式設計的朋友!什麼是資料遷移?資料遷移是將a資料庫的資料合併到b資料庫,以保證新舊資料的統一性,完整性。為什麼要資料遷移 假設有這麼乙個場景,某公司開發了乙個系統,已經投入使用,但後來因為業務...

使用資料時的一些經驗

現階段,我在收到資料後,總喜歡將資料拷貝要臨時空間去。然後再對資料進行分析,處理。這樣做在 中間會申請很多的臨時空間,看上去也很亂。例 struct firmware version t int armsize int fpgasize firmware firmware len recvfrom ...