摘要
参考文章
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。