本文介紹使用開源DataX配置同步任務將雲資料庫Cassandra全量資料匯入至Lindorm寬表的方法。
前提條件
已閱讀並瞭解Lindorm CQL使用限制。詳細資料,請參見Lindorm CQL使用限制。
已將用戶端IP地址添加至Lindorm白名單。如何添加,請參見設定白名單。
已在Lindorm寬表中建立Namespace和表。
建立Namespace的方法,請參見CREATE KEYSPACE。
通過CREATE TABLE文法建立Lindorm寬表,請參見CREATE TABLE。
注意事項
如果開源DataX部署在ECS執行個體,通過專用網路訪問Lindorm執行個體前,需要確保Lindorm執行個體和ECS執行個體滿足以下條件,以保證網路的連通性。
所在地區相同,並建議所在可用性區域相同(以減少網路延時)。
ECS執行個體與Lindorm執行個體屬於同一專用網路。
操作步驟
以下操作以開源DataX部署在ECS執行個體上為例。
執行以下命令下載開源DataX安裝包。
wget https://github.com/alibaba/DataX/archive/refs/tags/datax_v202303.tar.gz解壓下載的開源DataX安裝包。
tar zxvf datax_v202303.tar.gz執行以下命令在DataX_datax_v202303專案中建立job目錄並建立同步任務檔案,檔案名稱為JOB.json。
mkdir job touch JOB.json開啟同步任務檔案JOB.json。
vi JOB.json配置同步任務檔案,同步任務檔案的配置內容如下,根據下表的參數說明配置同步任務。
{ "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
是
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參數可以將單個任務拆分為多個任務。
執行以下代碼,在DataX_datax_v202303專案的job目錄下構建Datax可執行檔。
mvn -U package assembly:assembly -Dmaven.test.skip=true可選:參數調優。
您可以使用以下代碼,替換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)執行以下命令,運行單個同步任務。
#用法: 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。