Datax迁移Cassandra表级别TTL的数据

摘要    

参考文章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配置文件后,点击执行,最终结果如下:

Datax迁移Cassandra表级别TTL的数据


注意事项

1.datax主要将源集群的数据全表读出,然后写入到目标集群,所以运行datax的的节点cpu和内存配置越高,对整个datax迁移速度会有较大帮助;

2.cassandra源集群如果TTL过期数据过多,会造成tombstone过多,最终迁移过程可能出现读操作abort。如遇到这个问题,可以将源集群的tombstone进行清理,清理流程主要是:全集群做repair,调整gc_grace_seconds时间(时间需要调的相对合理,否则影响较大),全量数据做compact或者garbagecollect。

上一篇:这样才能正确解锁MaxCompute客户端


下一篇:网络管理自动化之三、SMS服务器的配置详解