導(dǎo)入Cassandra數(shù)據(jù)
本文介紹使用開源DataX配置同步任務(wù)將云數(shù)據(jù)庫(kù)Cassandra全量數(shù)據(jù)導(dǎo)入至云原生多模數(shù)據(jù)庫(kù) Lindorm寬表的方法。
前提條件
已閱讀并了解Lindorm CQL使用限制。詳細(xì)信息,請(qǐng)參見Lindorm CQL使用限制。
已將客戶端IP地址添加至Lindorm白名單。如何添加,請(qǐng)參見設(shè)置白名單。
已在云原生多模數(shù)據(jù)庫(kù) Lindorm寬表中創(chuàng)建Namespace和表。
創(chuàng)建Namespace的方法,請(qǐng)參見CREATE KEYSPACE。
通過CREATE TABLE語法創(chuàng)建Lindorm寬表,請(qǐng)參見CREATE TABLE。
注意事項(xiàng)
如果開源DataX部署在ECS實(shí)例,通過專有網(wǎng)絡(luò)訪問Lindorm實(shí)例前,需要確保Lindorm實(shí)例和ECS實(shí)例滿足以下條件,以保證網(wǎng)絡(luò)的連通性。
所在地域相同,并建議所在可用區(qū)相同(以減少網(wǎng)絡(luò)延時(shí))。
ECS實(shí)例與Lindorm實(shí)例屬于同一專有網(wǎng)絡(luò)。
操作步驟
以下操作以開源DataX部署在ECS實(shí)例上為例。
執(zhí)行以下命令下載開源DataX安裝包。
wget https://github.com/alibaba/DataX/archive/refs/tags/datax_v202303.tar.gz
解壓下載的開源DataX安裝包。
tar zxvf datax_v202303.tar.gz
執(zhí)行以下命令在DataX_datax_v202303項(xiàng)目中新建job目錄并創(chuàng)建同步任務(wù)文件,文件名為JOB.json。
mkdir job touch JOB.json
打開同步任務(wù)文件JOB.json。
vi JOB.json
配置同步任務(wù)文件,同步任務(wù)文件的配置內(nèi)容如下,根據(jù)下表的參數(shù)說明配置同步任務(wù)。
{ "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" ] } } } ] } }
參數(shù)
是否必選
說明
channel
是
表示同步任務(wù)的并行度,通過設(shè)置數(shù)值來提高同步任務(wù)的運(yùn)行速度。
host
是
port
是
端口號(hào)固定為9042。
reader.parameter.port:云數(shù)據(jù)庫(kù)Cassandra集群的連接地址端口號(hào)。
writer.parameter.port:云原生多模數(shù)據(jù)庫(kù) Lindorm寬表引擎的Cassandra兼容地址端口號(hào)。
useSSL
是
是否開啟SSL(Secure Sockets Layer)加密。
true:開啟SSL加密。
false:不開啟SSL加密。
keyspace
是
reader.parameter.keyspace:云數(shù)據(jù)庫(kù)Cassandra中需要導(dǎo)入的Keyspace名稱。
writer.parameter.keyspace:導(dǎo)入至Lindorm寬表的Namespace名稱。
table
是
reader.parameter.table:云數(shù)據(jù)庫(kù)Cassandra中需要導(dǎo)入的Table。
writer.parameter.table:導(dǎo)入至Lindorm寬表的表名。
column
是
reader.parameter.column:云數(shù)據(jù)庫(kù)Cassandra中需要導(dǎo)入的Table的列名。
writer.parameter.column:導(dǎo)入至Lindorm寬表中指定表的列名。
where
否
表示任務(wù)進(jìn)行拆分的條件。利用where參數(shù)可以將單個(gè)任務(wù)拆分為多個(gè)任務(wù)。
執(zhí)行以下代碼,在DataX_datax_v202303項(xiàng)目的job目錄下構(gòu)建Datax可執(zhí)行文件。
mvn -U package assembly:assembly -Dmaven.test.skip=true
可選:參數(shù)調(diào)優(yōu)。
您可以使用以下代碼,替換mvn執(zhí)行成功以后生成的target/datax/datax/bin/目錄下的datax.py執(zhí)行腳本中相同格式的代碼,來提升遷移效率:
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)
執(zhí)行以下命令,運(yùn)行單個(gè)同步任務(wù)。
#用法: 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為同步任務(wù)文件的名稱。
說明您也可以根據(jù)源集群和目標(biāo)集群的內(nèi)存、CPU或網(wǎng)絡(luò)等限制條件,在job目錄下創(chuàng)建多個(gè)同步任務(wù)文件,執(zhí)行命令同時(shí)運(yùn)行多個(gè)同步任務(wù)。
示例
如果您在執(zhí)行本文操作步驟時(shí)需要參考示例代碼,或在執(zhí)行步驟6時(shí)希望提高mvn -U命令的運(yùn)行速度,請(qǐng)參見datax.tar.gz。