このトピックでは、カタログを使用して StarRocks から ApsaraDB for SelectDB にオフラインデータを移行する方法について説明します。
前提条件
StarRocks インスタンスと SelectDB インスタンスが相互に通信できることを確認してください。
データソースクラスターのすべてのノードと SelectDB インスタンスが同じ VPC にあります。同じ VPC にない場合は、まずネットワーク接続の問題を解決する必要があります。詳細については、「ApsaraDB for SelectDB インスタンスとデータソース間のネットワーク接続の問題を解決するにはどうすればよいですか?」をご参照ください。
StarRocks インスタンスの IP アドレスを SelectDB インスタンスのホワイトリストに追加します。詳細については、「ホワイトリストを設定する」をご参照ください。
StarRocks インスタンスにホワイトリストがある場合は、SelectDB インスタンスの IP アドレス CIDR ブロックを StarRocks インスタンスのホワイトリストに追加します。
SelectDB インスタンスが属する VPC 内の SelectDB インスタンスの IP アドレスを取得するには、ApsaraDB SelectDB インスタンスが属する VPC 内の IP アドレスを表示するにはどうすればよいですか? で提供されている操作を実行できます。
SelectDB インスタンスのパブリック IP アドレスを取得するには、ping コマンドを実行して SelectDB インスタンスのパブリックエンドポイントにアクセスし、インスタンスの IP アドレスを取得できます。
カタログとは何か、およびその基本操作を理解していること。詳細については、「データレイクハウス」をご参照ください。
サンプル環境
この例では、`SR_t` テーブルから `starRocks_db` StarRocks データベースの `test_SR2SelectDB` テーブルにデータを移行する方法を示します。`test_db` SelectDB データベース。必要に応じてパラメーターを変更できます。サンプル環境は次のとおりです:
ターゲットデータベース: 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 インスタンスに接続します。詳細については、「インスタンスへの接続」をご参照ください。
説明SWITCH命令は DMS を使用してログインした場合には機能しません。MySQL クライアントを使用して接続する必要があります。StarRocks Java Database Connectivity (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 | +--------------+-------------------+----------+-----------+-------------------------+---------------------+------------------------+(オプション) 外部カタログフォルダ SR_catalog に切り替えます。
`starrocks_catalog` 外部カタログのデータを、内部カタログのデータにアクセスするのと同じ方法で表示およびアクセスできます。
説明現在、ApsaraDB for SelectDB は外部カタログのデータに対する読み取り操作のみをサポートしています。
SWITCH SR_catalog;(オプション) `internal` 内部カタログに切り替えます。
前のステップを実行しなかった場合は、このステップをスキップしてください。
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 doris_catalog.SR_db.SR_t;インポートされたデータを確認します。
SELECT * FROM test_SR2SelectDB;
増分データの移行
本番環境では、StarRocks データにはオフラインデータと増分データの両方が含まれます。StarRocks から SelectDB にデータを移行する一般的なシナリオは、クエリを高速化するためにデータをデータウェアハウスにコピーすることです。増分データ移行には、次の 2 つの方法のいずれかを使用できます:
SelectDB のデータを生成するときに、同時にコピーを SelectDB に書き込むことができます。
定期的なジョブを使用して StarRocks からパーティション化されたデータを読み取り、そのデータを SelectDB に書き込みます。