<b> </b>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用戶端建立新庫對應的資料表,表結構如下:
<b> </b><b></b>
<b>列名稱</b><b></b>
<b>類型</b><b></b>
primaryKey
PrimaryKeyName
string
<b>注意:</b>
ots建立表結構時隻建立primarykey,屬性列不需要建立。
datax的遷移配置ots_migration.json的配置内容如下,在遷移資料的配置中,需要列全所有的屬性列。
{
"job": {
"setting":
"speed": {
"channel": "5"
}
},
"content":
[
{
"reader": {
"name": "otsreader",
"parameter": {
"endpoint":"http://xxx.vpc.ots.yyy.com/",
"accessId":"src_accessId",
"accessKey":"src_ accessKey ",
"instanceName":"KHGL-VPC2-01",
"table":"tablename",
"column" : [
{"name":" PrimaryKeyName "},
{"name":"createId"},
{"name":"createUser"},
{"name":"createName"},
{"name":"searchTime"},
{"name":"state"},
{"name":"stateDesc"},
{"name":"createTime"}
],
"range": {
"begin":[{"type": "INF_MIN"}],
"end":[{"type":"INF_MAX"}]
}
}
},
"writer": {
"name": "otswriter",
"endpoint":"http://xxx.vpc.ots.yun.zzz.com/",
"accessId":"dest_accessId",
"accessKey":"dest_accessKey",
"instanceName":"RHYKF-OTS-VPC1-1",
"primaryKey" : [
{"name":"zCodeMD5",
"type":"string"}
],
{"name":"createId","type":"string"},
{"name":"createUser","type":"string"},
{"name":"createName","type":"string"},
{"name":"searchTime","type":"string"},
{"name":"state","type":"string"},
{"name":"stateDesc","type":"string"},
{"name":"createTime","type":"string"}
],
"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資料進行全量回切。