导入Cassandra数据

本文介绍使用开源DataX配置同步任务将云数据库Cassandra全量数据导入至云原生多模数据库 Lindorm宽表的方法。

前提条件

  • 已阅读并了解Lindorm CQL使用限制。详细信息,请参见Lindorm CQL使用限制

  • 已将客户端IP地址添加至Lindorm白名单。如何添加,请参见设置白名单

  • 已在云原生多模数据库 Lindorm宽表中创建Namespace和表。

注意事项

如果开源DataX部署在ECS实例,通过专有网络访问Lindorm实例前,需要确保Lindorm实例和ECS实例满足以下条件,以保证网络的连通性。

  • 所在地域相同,并建议所在可用区相同(以减少网络延时)。

  • ECS实例与Lindorm实例属于同一专有网络。

操作步骤

以下操作以开源DataX部署在ECS实例上为例。

  1. 执行以下命令下载开源DataX安装包。

    wget https://github.com/alibaba/DataX/archive/refs/tags/datax_v202303.tar.gz
  2. 解压下载的开源DataX安装包。

    tar zxvf datax_v202303.tar.gz
  3. 执行以下命令在DataX_datax_v202303项目中新建job目录并创建同步任务文件,文件名为JOB.json

    mkdir job
    touch JOB.json
  4. 打开同步任务文件JOB.json

    vi JOB.json
  5. 配置同步任务文件,同步任务文件的配置内容如下,根据下表的参数说明配置同步任务。

    {
      "job": {
        "setting": {
          "speed": {
            "channel": 1
          }
        },
        "content": [
          {
            "reader": {
              "name": "cassandrareader",
              "parameter": {
                "host": "ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com",
                "port": 9042,
                "username": "TestUser01",
                "password": "testPassword",
                "useSSL": false,
                "consistancyLevel": "LOCAL_ONE",
                "timeout": 600000,
                "fetchsize": 1,
                "keyspace": "db",
                "table": "tt",
                "column": [
                  "id",
                  "n",
                  "id1"
                ],
                "where": "id > ${split_task_min} and id < ${split_task_max}"
          }
        },
          "writer": {
            "name": "cassandrawriter",
            "parameter": {
              "host": "ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com",
              "port": 9042,
              "username": "TestUser01",
              "password": "testPassword",
              "useSSL": false,
              "keyspace": "t1",
              "table": "tt",
              "column": [
                "id",
                "n",
                "id1"
              ]
          }
        }
        }
        ]
      }
    }                        

    参数

    是否必选

    说明

    channel

    表示同步任务的并行度,通过设置数值来提高同步任务的运行速度。

    host

    • reader.parameter.host:云数据库Cassandra集群的连接地址。您可以通过云数据库Cassandra控制台获取,获取方法请参见获取连接地址

    • writer.parameter.host云原生多模数据库 Lindorm宽表引擎的Cassandra兼容地址。您可以通过云原生多模数据库 Lindorm控制台获取,获取方法请参见获取连接地址

    port

    端口号固定为9042。

    • reader.parameter.port:云数据库Cassandra集群的连接地址端口号。

    • writer.parameter.port云原生多模数据库 Lindorm宽表引擎的Cassandra兼容地址端口号。

    useSSL

    是否开启SSL(Secure Sockets Layer)加密。

    • true:开启SSL加密。

    • false:不开启SSL加密。

    keyspace

    • reader.parameter.keyspace:云数据库Cassandra中需要导入的Keyspace名称。

    • writer.parameter.keyspace:导入至Lindorm宽表的Namespace名称。

    table

    • reader.parameter.table:云数据库Cassandra中需要导入的Table。

    • writer.parameter.table:导入至Lindorm宽表的表名。

    column

    • reader.parameter.column:云数据库Cassandra中需要导入的Table的列名。

    • writer.parameter.column:导入至Lindorm宽表中指定表的列名。

    where

    表示任务进行拆分的条件。利用where参数可以将单个任务拆分为多个任务。

  6. 执行以下代码,在DataX_datax_v202303项目的job目录下构建Datax可执行文件。

    mvn -U package assembly:assembly -Dmaven.test.skip=true
  7. 可选:参数调优。

    您可以使用以下代码,替换mvn执行成功以后生成的target/datax/datax/bin/目录下的datax.py执行脚本中相同格式的代码,来提升迁移效率:

    DEFAULT_JVM = "-Xms8g -Xmx8g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%s/log" % (DATAX_HOME)
    DEFAULT_PROPERTY_CONF = "-Dfile.encoding=UTF-8 -Dcom.datastax.driver.NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB=1900 -Dlogback.statusListenerClass=ch.qos.logback.core.status.NopStatusListener -Djava.security.egd=file:///dev/urandom -Ddatax.home=%s -Dlogback.configurationFile=%s" % (
    DATAX_HOME, LOGBACK_FILE)
  8. 执行以下命令,运行单个同步任务。

    #用法: python target/datax/datax/bin/datax.py --help
    python target/datax/datax/bin/datax.py job/JOB.json -p "-Dsplit_task_min=100 -Dsplit_task_max=1000"

    其中JOB.json为同步任务文件的名称。

    说明

    您也可以根据源集群和目标集群的内存、CPU或网络等限制条件,在job目录下创建多个同步任务文件,执行命令同时运行多个同步任务。

示例

如果您在执行本文操作步骤时需要参考示例代码,或在执行步骤6时希望提高mvn -U命令的运行速度,请参见datax.tar.gz