StarRocks から ApsaraDB for SelectDB へは、ApsaraDB for SelectDB のデータ移行機能またはカタログを使用してデータを移行できます。データ量とビジネスシナリオに基づいて、適切な方法を選択できます。このトピックでは、カタログを使用して StarRocks から ApsaraDB for SelectDB へオフラインデータを移行する方法について説明します。
移行方法の選択
次の表を使用して、ユースケースに最適な移行方法を選択してください。
|
移行方法 |
ユースケース |
メリット |
手順 |
|
ApsaraDB for SelectDB のデータ移行機能を使用する (推奨) |
すべてのシナリオに適用できます。 |
|
|
|
カタログ |
すでに Alibaba Cloud 上にあるデータに適用できます。 説明
Alibaba Cloud E-MapReduce クラスターを使用するシナリオも含まれます。 |
|
このトピックでは、カタログを例に、StarRocks から SelectDB へオフラインデータを移行する方法について説明します。
カタログを使用したデータ移行
前提条件
-
StarRocks インスタンスと ApsaraDB for SelectDB インスタンス間のSelectDBを確保してください。
-
StarRocks クラスターのすべてのノードと ApsaraDB for SelectDB インスタンスが同じ VPC にあること。異なる VPC にある場合は、まずネットワーク接続を確立する必要があります。詳細については、「ApsaraDB for SelectDB インスタンスとデータソース間のネットワーク接続を確立する方法」をご参照ください。
-
StarRocks インスタンスの IP アドレスを ApsaraDB for SelectDB インスタンスのホワイトリストに追加してください。詳細については、「ホワイトリストの設定」をご参照ください。
-
StarRocks インスタンスでホワイトリストを使用している場合は、SelectDB インスタンスが存在する VPC の CIDR ブロックを StarRocks のホワイトリストに追加してください。
-
ご利用の SelectDB インスタンスが存在する VPC の IP 範囲を取得するには、「ApsaraDB for SelectDB インスタンスが配置されている VPC の IP CIDR ブロックを確認する方法」をご参照ください。
-
SelectDB インスタンスのパブリック IP アドレスを取得するには、そのパブリックエンドポイントSelectDB に対して
PINGコマンドを使用します。
-
-
-
カタログとその基本操作に精通していること。詳細については、「レイクハウスデータ処理」をご参照ください。
サンプル環境
この例では、StarRocks の starRocks_db データベースの SR_t テーブルから SelectDB の test_db データベースの test_SR2SelectDB テーブルにデータを移行する方法を示します。移行を実行する際には、必要に応じてパラメーターを変更してください。サンプル環境は次のとおりです。
-
ターゲットデータベース:
test_db -
ターゲットテーブル:
test_SR2SelectDB -
ソースデータベース:
starRocks_db -
ソーステーブル:
SR_t
サンプルソースデータの準備
ソースの StarRocks インスタンスにログインし、次の手順を実行してください。
-
データベースを作成します。
CREATE DATABASE starRocks_db; -
テーブルを作成します。
CREATE TABLE SR_t ( id int, name string, age int ) DISTRIBUTED BY HASH(id) BUCKETS 4 PROPERTIES("replication_num" = "1"); -
データを挿入します。
INSERT INTO SR_t VALUES (1, 'Alice', 25), (2, 'Bob', 30), (3, 'Charlie', 35), (4, 'David', 40), (5, 'Eve', 45);
操作手順
-
SelectDB インスタンスに接続します。詳細については、「インスタンスへの接続」をご参照ください。
説明Data Management Service (DMS) を使用してログインした場合、
SWITCHコマンドは機能しません。MySQL クライアントを使用して接続してください。 -
StarRocks JDBC カタログを作成します。詳細については、「JDBC データソース」をご参照ください。
CREATE CATALOG SR_catalog PROPERTIES ( "type"="jdbc", "user"="root", "password"="123456", "jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo", "driver_url" = "mysql-connector-java-8.0.25.jar", "driver_class" = "com.mysql.cj.jdbc.Driver", "checksum" = "fdf55dcef04b09f2eaf42b75e61ccc9a" )パラメーター
パラメーター
必須
デフォルト値
説明
user
はい
なし
StarRocks データベースのアカウント。
password
はい
なし
StarRocks データベースのパスワード。
jdbc_url
はい
なし
JDBC 接続文字列。StarRocks データベースの接続アドレスを含める必要があります。
driver_url
はい
なし
JDBC ドライバーの JAR パッケージ名。
説明-
mysql-connector-java-8.0.25.jarを使用します。 -
別の JAR パッケージを使用するには、チケットを送信してサポートを依頼してください。
driver_class
はい
なし
JDBC ドライバーのクラス名。
このパラメーターを
com.mysql.cj.jdbc.Driverに設定します。lower_case_table_names
(バージョン 4.0 で lower_case_meta_names に変更)
いいえ
"false"
外部 JDBC データソースからデータベース名とテーブル名を小文字で同期するかどうかを指定します。
true: リモートシステム内の実際の名前へのマッピングを小文字の名前から維持することで、小文字ではない名前のデータベースやテーブルを照会できます。この場合、データベース、テーブル、および列の名前はすべて小文字に変換されます。
false: 小文字ではない名前のデータベースやテーブルを照会することはできません。
重要-
SelectDB 3.0 の場合:
-
FE の
lower_case_table_namesパラメーターが1または2に設定されている場合は、カタログのlower_case_table_namesパラメーターをtrueに設定する必要があります。 -
FE の
lower_case_table_namesパラメーターが0に設定されている場合、カタログパラメーターはtrueまたはfalseに設定できます。
-
-
SelectDB 4.0 の場合:
-
FE の
lower_case_table_namesパラメーターが0または2に設定されている場合、データベース、テーブル、および列の名前は変換されません。 -
FE の
lower_case_table_namesパラメーターが1に設定されている場合、テーブル名は小文字に変換されますが、データベース名と列名は変換されません。
-
only_specified_database
いいえ
"false"
指定されたデータベースのみを同期するかどうかを指定します。
true: JDBC URL で指定されたデータベースのみを同期します。
false:ユーザーが権限を持つすべてのデータベースを同期します。
include_database_list
いいえ
""
only_specified_database=trueの場合、同期するデータベースを指定します。複数のデータベースはコンマ (,) で区切ります。データベース名は、大文字と小文字が区別されます。exclude_database_list
いいえ
""
only_specified_database=trueの場合、同期から除外するデータベースを指定します。複数のデータベースはコンマ (,) で区切ります。データベース名は、大文字と小文字が区別されます。meta_names_mapping
いいえ
""
外部データソースに DORIS と doris のように大文字と小文字だけが異なる名前がある場合、カタログをクエリするとあいまいさによるエラーが発生する可能性があります。この場合、
meta_names_mappingパラメーターを設定して競合を解決します。詳細については、「大文字と小文字の区別の設定」をご参照ください。
重要このパラメーターは SelectDB 4.0 にのみ適用されます。
-
-
カタログを表示します。
SHOW CATALOGS; -- カタログが正常に作成されたことを確認します。次の結果が返されます。
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+ | CatalogId | CatalogName | Type | IsCurrent | CreateTime | LastUpdateTime | Comment | +--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+ | 436009309195 | SR_catalog | jdbc | | 2024-08-06 17:09:08.058 | 2024-07-19 18:04:37 | | | 0 | internal | internal | yes | UNRECORDED | NULL | Doris internal catalog | +--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+ -
(任意) 外部カタログ SR_catalog に切り替えます。
外部カタログ SR_catalog のデータは、内部カタログと同じように表示およびアクセスできます。
説明現在、ApsaraDB for SelectDB は、外部カタログ内のデータに対する読み取り操作のみをサポートしています。
SWITCH SR_catalog; -
(任意) 内部カタログに切り替えます。
手順 4 を実行しなかった場合は、この手順をスキップしてください。
SWITCH internal; -
(任意) データベースを作成します。
ターゲットデータベースをすでに作成している場合は、この手順をスキップしてください。
CREATE database test_db; -
ターゲットデータベースに切り替えます。
USE test_db; -
テーブルを作成します。
すでにターゲットテーブルがある場合は、ターゲットテーブルの列の型が StarRocks のソースデータの列の型に対応していることを確認してください。
ターゲットテーブルがない場合は、テーブルを作成する際に、その列の型が StarRocks のソースデータの列の型に対応していることを確認してください。
列マッピングの詳細については、「型マッピング」をご参照ください。
CREATE TABLE test_SR2SelectDB ( id int, name string, age int ) DISTRIBUTED BY HASH(id) BUCKETS 4 PROPERTIES("replication_num" = "1"); -
データを移行します。
INSERT INTO test_SR2SelectDB SELECT * FROM SR_catalog.starRocks_db.SR_t; -
データインポートの結果を確認します。
SELECT * FROM test_SR2SelectDB;
増分データの移行
本番環境の StarRocks データには、オフラインデータと増分データの両方が含まれます。StarRocks から SelectDB へデータを移行する一般的なユースケースは、クエリの高速化のためにデータウェアハウス へデータをコピーすることです。増分データを移行するには、次のいずれかの方法を検討してください。
-
SelectDB 向けのデータを生成すると同時に、そのコピーを SelectDB に書き込みます。
-
StarRocks からパーティション化されたデータを定期的に読み取り、 SelectDB に書き込みます。