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