ApsaraDB for SelectDB のデータ移行機能または Catalog を使用して、StarRocks から ApsaraDB for SelectDB にデータを移行できます。データ量とビジネスシナリオに基づいて、適切な方法を選択できます。このトピックでは、Catalog を使用して StarRocks から ApsaraDB for SelectDB にオフラインデータを移行する方法について説明します。
移行方法の選択
次の表を使用して、ビジネスシナリオに最適な移行方法を選択してください。
方法 | ユースケース | メリット | 手順 |
ApsaraDB for SelectDB のデータ移行機能の使用(推奨) | すべてのシナリオに適用可能です。 |
| |
カタログ | データがすでに Alibaba Cloud 上にある場合。 説明 これには、Alibaba Cloud E-MapReduce クラスターを含むシナリオが含まれます。 |
|
このトピックでは、カタログを例として、StarRocks からSelectDB へオフラインデータを移行する方法を説明します。
カタログを使用したデータ移行
前提条件
StarRocks インスタンスと ApsaraDB for SelectDB インスタンスの間で SelectDB を設定してください。
SelectDB クラスターのすべてのノードと ApsaraDB for SelectDB インスタンスは、同じ VPC 内にあります。 異なる VPC にある場合は、まずネットワーク接続を確立する必要があります。 詳細については、「ApsaraDB for SelectDB インスタンスとデータソース間のネットワーク接続を確立する方法」をご参照ください。
StarRocks インスタンスの IP アドレスを、ApsaraDB for SelectDB インスタンスの SelectDB に追加します。 詳細については、「ホワイトリストを設定する」をご参照ください。
StarRocks インスタンスがホワイトリストを使用している場合は、SelectDB インスタンスが存在する VPC の CIDR ブロックを StarRocks のホワイトリストに追加してください。
SelectDBSelectDB インスタンスが属する VPC 内の インスタンスの IP アドレスを取得するには、ApsaraDB SelectDB インスタンスが属する VPC の IP アドレスを表示するにはどうすればよいですか? に記載されている操作を実行できます。
SelectDB インスタンスのパブリック IP アドレスを取得するには、ping コマンドを実行して SelectDB インスタンスのパブリックエンドポイントにアクセスし、インスタンスの IP アドレスを取得します。
カタログとその基本的な操作に精通していること。詳細については、「データレイクハウス」をご参照ください。
サンプル環境
この例では、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 (DMS) を使用してログインする場合、
SWITCHコマンドは機能しません。MySQL クライアントを使用して接続してください。StarRocks JDBC カタログを作成します。詳細については、「JDBC データソース」をご参照ください。
CREATE CATALOG starrocks_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:JDBC URL 内のすべてのデータベースを同期します。
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 | starrocks_catalog | jdbc | | 2024-08-06 17:09:08.058 | 2024-07-19 18:04:37 | | | 0 | internal | internal | yes | UNRECORDED | NULL | Doris internal catalog | +--------------+-------------------+----------+-----------+-------------------------+---------------------+------------------------+(オプション) 外部カタログ
starrocks_catalogに切り替えます。内部カタログと同様に、外部カタログ
starrocks_catalogのデータを表示およびアクセスできます。説明現在、SelectDB は外部カタログのデータに対する読み取り操作のみをサポートしています。
SWITCH starrocks_catalog;(オプション)
internalカタログに切り替えます。手順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 starrocks_catalog.starRocks_db.SR_t;データインポートのステータスを確認します。
SELECT * FROM test_SR2SelectDB;
増分データの移行
本番環境の StarRocks データには、オフラインデータと増分データの両方が含まれます。StarRocks からSelectDB にデータを移行する一般的なユースケースは、クエリを高速化するためにデータをデータウェアハウスにコピーすることです。増分データを移行するには、次のいずれかの方法を検討してください:
SelectDB 向けのデータを生成する際に、データのコピーを SelectDB に並行して書き込むことができます。
StarRocks からパーティション分割されたデータを定期的に読み取り、SelectDB に書き込みます。