摘要
參考文章
datax遷移Cassandra資料,我們可以使用datax離線遷移Cassandra 到Cassandra資料庫以及mysql 到Cassandra的資料遷移,本文介紹如何使用Datax進行離線遷移Cassandra的表級别的TTL資料。
快速入門
使用datax的步驟很簡單,分别如下:
1.通過
官方連結下載下傳datax運作包;
2.目标叢集建構好需要遷移的表(表結構需要完全一樣);
2.配置下同步作業配置(json檔案);
4.在datax bin目錄下執行如下指令:
python datax.py {作業配置.json}
注:因為是使用python運作,是以需要事先部署好python環境。
Cassandra 表級别TTL 資料離線遷移
假設使用者的keyspace名字是:ks,表名是:tb,且使用者的表的列包含pk, cn1,cn2,其中pk為主鍵(PRIMARY KEY),cn2,cn2 為regular column,表的ttl時間是10000秒,那麼使用者在進行遷移前需要按照上述步驟的1和2準備好遷移的基礎環境;
這裡給出使用者同步的json作業配置檔案:
{
"job": {
"setting": {
"speed": {
"channel": 3
}
},
"content": [
{
"reader": {
"name": "cassandrareader",
"parameter": {
"host": "源叢集位址",
"port": 9042,
"useSSL": false,
"keyspace": "ks",
"table": "tb",
"column": [
"c1",
"c2",
"writetime(c2)"
]
}
},
"writer": {
"name": "cassandrawriter",
"parameter": {
"host": "目标叢集位址",
"port": 9042,
"useSSL": false,
"keyspace": "ks",
"table": "tb",
"column": [
"c1",
"c2",
"writetime()"
]
}
}
}
]
}
}
按照上述配置生成json配置檔案後,點選執行,最終結果如下:

注意事項
1.datax主要将源叢集的資料全表讀出,然後寫入到目标叢集,是以運作datax的的節點cpu和記憶體配置越高,對整個datax遷移速度會有較大幫助;
2.cassandra源叢集如果TTL過期資料過多,會造成tombstone過多,最終遷移過程可能出現讀操作abort。如遇到這個問題,可以将源叢集的tombstone進行清理,清理流程主要是:全叢集做repair,調整gc_grace_seconds時間(時間需要調的相對合理,否則影響較大),全量資料做compact或者garbagecollect。