OTS資料遷移驗證方案

2021-09-20 19:50:17 字數 1950 閱讀 8805

ots在業務停寫的情況下,可以通過datax工具對ots資料的全量遷移。本文描述了在進行業務割接的情況下,ots資料的全量遷移配置方法,以及資料校驗方法。

tablestore客戶端工具機:在本地安裝**儲存客戶端管理工具,提供圖形化的操作介面,用於建立、更新和刪除資料表。

datax資料遷移工具機:安裝python、jdk 和datax。jdk版本需要1.7及以上,python版本推薦2.6.x。

以上兩台工具機需要跟老、新環境的ots例項開通防火牆策略的80埠。

1)源ots停止新資料的寫入。

2)用datax遷移前,確定好ots表結構的primary key及其他所有的屬性列。

ots採用datax進行資料遷移,在ots源停止新資料寫入的情況下,把源庫的表的資料全部遷移到新庫。

通過tablestore客戶端建立新庫對應的資料表,表結構如下:

列名稱

型別

primarykey

primarykeyname

string

注意:

ots建立表結構時只建立primarykey,屬性列不需要建立。

datax的遷移配置ots_migration.json的配置內容如下,在遷移資料的配置中,需要列全所有的屬性列。

},"content": [,,

,,,,

,],"range": ],

"end":}}

},"writer":

],"column" : [,,

,,,,

],"writemode" : "putrow"}}

}]}}

執行datax命令

nohup python datax.py ots_migration.json>ots_result &

通過datax分別把源和目標ots資料匯出為文字檔案,可以首先對兩個匯出資料檔案進行md5sum比較,如果md5sum的返回值不同,需要根據資料割接視窗的時間要求和資料一致性要求進行如下兩點操作。如果對資料一致性要求較高,需要對兩個資料檔案進行diff比較。如果資料檔案較大,此校驗方法耗時會比較長,可簡單對兩個資料檔案的行數進行對比。

將源和目標端的全量資料匯出到第三方伺服器上,通過diff方式對比源和目的端的資料,來進行資料校驗。

通過diff的方式,對兩個資料檔案,進行逐行對比。由於datax是按照順序進行資料的匯出,不要求事先對資料檔案進行排序。

lâ  diff使用方法

diff  file1 file2

將源和目的端的全量資料匯出到第三方伺服器上,通過行數統計的方式對比源和目的端的資料,具體操作命令通過datax把ots的源和目標資料分別匯出文字,分別從datax的匯出日誌中獲取到ots源和目標資料的行數。

示例如下:其中讀出記錄總數就是ots資料行數。

2017-11-24 22:05:12.023 [job-0] info  jobcontainer -

任務啟動時刻                    : 2017-11-24 21:31:10

任務結束時刻                    : 2017-11-24 22:05:12

任務總計耗時                    :               2041s

任務平均流量                    :            4.00mb/s

記錄寫入速度                    :          82053rec/s

讀出記錄總數

:           167390000

讀寫失敗總數                    :                   0

由於ots不支援增量遷移方法,一旦涉及到業務上線之後,ots已經有資料寫入,但需要進行業務回滾的場景,需要依照正向遷移的方式將ots資料進行全量回切。

MongoDB資料遷移方案

mongodump,mongorestore mongodump 命令格式 mongodump h dbhost d dbname o dbdirectory h mongodb所在伺服器位址,例如127.0.0.1,也可以指定埠 127.0.0.1 8080 d 需要備份的資料庫名稱,例如 tes...

distcp資料遷移方案

資料遷移distcp方案 根據遷移的實際情況,由於資料量大 重要 迫切性,因此實施方案每一步都需嚴謹執行,並且當出錯時清楚缺少的資料和補救的辦法。大的步驟分為3步,即export distcp import。在export匯出資料時,以時間戳作為引數,如將三個月的資料為乙個單位匯出,出錯時,重複執行...

遷移資料方案

我們在做系統的時候,有時候會遇到遷移資料或者處理任務 任務量又比較大 比如把redis的資料取出來做一些操作,然後處理完的資料在存到hbase 我們需要考慮到資料處理過程中失敗情況,需要處理高併發去執行,具體怎麼設計,怎麼做呢,有一種簡單的方式如下 1我們先把任務資料存到redis任務佇列裡 2定義...