このトピックでは、ApsaraDB RDS インスタンスからフルデータと増分データをインポートする方法について説明します。
注意事項
2023年3月10日以降、LTS を使用して ApsaraDB RDS からフルデータを同期することはできなくなりました。LTS インスタンスが 2023年3月10日以降に購入された場合、そのインスタンスを使用して ApsaraDB RDS からフルデータを同期することはできません。LTS インスタンスが 2023年3月10日以前に購入された場合は、引き続き LTS インスタンスを使用して ApsaraDB RDS からフルデータを同期できます。
シナリオ
ストレージコストを削減するために、ApsaraDB RDS インスタンスから Lindorm に履歴データをインポートする場合。
ApsaraDB RDS インスタンスから Lindorm にフルデータをインポートする場合。
前提条件
LTS インスタンスは 2023年3月10日以前に購入されています。
LTS インスタンスの Web UI にログオンしています。詳細については、「同期タスクの作成」をご参照ください。
LTS、宛先 ApsaraDB for HBase クラスタ、およびソース ApsaraDB RDS インスタンスは、同じ仮想プライベートクラウド(VPC)に接続またはデプロイされています。
機能
フルデータと増分データの移行機能がサポートされています。ApsaraDB RDS インスタンスのフルデータと増分データは、HBase と互換性のある LindormTable インスタンスにインポートできます。
データ変更機能がサポートされています。ソーステーブルから宛先テーブルにデータを移行する際に、データを変更できます。詳細については、このトピックのサンプル設定セクションをご参照ください。
複数のテーブルのデータを一度にインポートできます。
制限
フルデータインポートのデータソースは、MySQL データベースである必要があります。
増分データインポートのデータソースは、データ伝送サービス(DTS)タスクである必要があります。
宛先データソースは、SQL エンドポイントまたは HBase 互換エンドポイントで構成された LindormTable ノードにすることができます。
手順
LTS インスタンスの Web UI で、[データインポート] > RDS移行 を選択します。
[作成] をクリックします。
RDS データソース、DTS データソース、および宛先データソースを選択します。
説明LindormTable 宛先データソースを追加する方法の詳細については、「LindormTable データソースの追加」をご参照ください。
ApsaraDB RDS データソースを追加する方法の詳細については、「ApsaraDB RDS データソース」をご参照ください。
DTS データソースを追加する方法の詳細については、「DTS データソースの追加」をご参照ください。

[編集] をクリックしてデフォルト設定を表示します。設定を変更することもできます。詳細については、このトピックのサンプル設定セクションをご参照ください。
データをインポートするテーブルを選択します。次に、[設定の生成] をクリックします。
説明LTS が指定された ApsaraDB RDS データベーステーブルから LindormTable にフルデータと増分データをインポートする場合、増分データの前に履歴データがインポートされます。
LTS が Cassandra クエリ言語(CQL)と互換性のある LindormTable ノードにデータを移行する場合、システムはデフォルトで、ソース ApsaraDB RDS テーブルの列の名前とデータ型と同じ名前とデータ型を持つ列を生成します。ビジネス要件に基づいて、宛先テーブルの列の名前、およびソーステーブルの列と宛先テーブルの列間のマッピング関係を指定できます。詳細については、このトピックのサンプル設定セクションをご参照ください。
宛先インスタンスにデータが移行された後、システムは自動的に f という名前の列ファミリを生成します。指定された ApsaraDB RDS テーブルの各列は、f 列ファミリの 1 つの列に関連付けられます。行キーは、ソース ApsaraDB RDS テーブルの主キー列を連結した文字列です。
デフォルト設定を使用する場合、インポートジョブの完了後にソース ApsaraDB RDS データベーステーブルから削除されたデータは、宛先テーブルから削除されません。ソーステーブルから削除されたデータをシステムが削除するようにするには、設定を変更します。詳細については、このトピックのサンプル設定セクションをご参照ください。
[作成] をクリックします。
サンプル設定
次のコードは、Lindorm SQL を使用してテーブルにデータをインポートするためのサンプル設定を示しています。詳細については、「Jtwig リファレンスマニュアル」をご参照ください。
{
"reader": {
"querySql": [
"select * from dts.cluster where id < 1000",// フルデータを同期するために実行されるクエリステートメント。1 つのステートメントは、1 つの読み取りスレッドを使用して実行されます。
"select * from dts.cluster where id >= 1000"// クエリの速度を向上させ、再試行のコストを削減するために、クエリを分割することをお勧めします。
]
},
"writer": {
"columns": [
{
"name": "f:id",// 宛先テーブルの列の名前。
"value": "id", // ソーステーブルの列の名前。
"isPk": true , // 列が主キー列かどうかを指定します。
"type": "BIGINT" // 宛先テーブルの列のデータ型。このパラメータはオプションです。このパラメータを指定しない場合、宛先テーブルの列のデータ型はソーステーブルの列のデータ型と同じになります。
},
{
"name": "cluster_id",
"value": "cluster_id",
"isPk": false
},
{
"name": "id_and_cluster",
"value": "{{concat(id, cluster_id)}}",// Jtwig ドメイン名を使用してデータを変更できます。
"isPk": true
},
],
"config": {
"skipDelete": true // 削除操作をスキップすることを指定します。
},
"table": {
"name": "dts:cluster",// 宛先 Lindorm クラスタのテーブルの名前。テーブル名はピリオド(.)で区切ります。
"parameter": {
"compression": "ZSTD"
}
},
"sourceTable": "dts.cluster"
}
}次のコードは、ApsaraDB for HBase API を使用してテーブルにデータをインポートするためのサンプル設定を示しています。
{
"reader": {
"querySql": [
"select * from dts.cluster where id < 1000",// フルデータを同期するために実行されるクエリステートメント。1 つのステートメントは、1 つの読み取りスレッドを使用して実行されます。
"select * from dts.cluster where id >= 1000"// クエリの速度を向上させ、再試行のコストを削減するために、クエリを分割することをお勧めします。
]
},
"writer": {
"columns": [
{
"name": "f:id",// 宛先テーブルの列の名前。
"value": "id", // ソーステーブルの列の名前。
"isPk": false // このパラメータはオプションです。このパラメータはインポートプロセスに影響しません。
},
{
"name": "f:cluster_id",
"value": "cluster_id",
"isPk": false
},
{
"name": "f:id_and_cluster",
"value": "{{concat(id, cluster_id)}}",// Jtwig ドメイン名を使用してデータを変更できます。
}
],
"rowkey": {
"value": "id" // 宛先テーブルの行キー。行キーは、ソース ApsaraDB RDS データベーステーブルの主キー列で構成されます。このパラメータの値は、Jtwig 構文に基づいて指定できます。
},
"config": {
"skipDelete": true // 削除操作をスキップすることを指定します。
},
"table": {
"name": "dts:cluster",// 宛先クラスタのテーブルの名前。
"parameter": {
"compression": "ZSTD",// 宛先テーブルに使用される圧縮アルゴリズム。宛先テーブルの圧縮アルゴリズムとして Zstandard(zstd)を使用することをお勧めします。
"split":["1", "5", "9", "b"] // 分割キーを指定して、宛先テーブルを事前にパーティション分割します。
}
},
"sourceTable": "dts.cluster"
}
}