StarRocks Migration Tool (SMT)
StarRocks Migration Tool (SMT) は、StarRocks が提供するデータ移行ツールで、Flink を通じてソースデータベースから StarRocks にデータをロードします。SMT の主な機能は次のとおりです:
- ソースデータベースとターゲットの StarRocks クラスターの情報に基づいて、StarRocks にテーブルを作成するためのステートメントを生成します。
- Flink の SQL クライアントで実行可能な SQL ステートメントを生成し、データ同期のための Flink ジョブを送信します。これにより、パイプラインでのフルまたは増分データ同期が簡素化されます。現在、SMT は以下のソースデータベースをサポートしています:
| ソースデータベース | StarRocks にテーブルを作成するためのステートメントを生成 | フルデータ同期 | 増分データ同期 |
|---|---|---|---|
| MySQL | サポート | サポート | サポート |
| PostgreSQL | サポート | サポート | サポート |
| Oracle | サポート | サポート | サポート |
| Hive | サポート | サポート | サポートされていない |
| ClickHouse | サポート | サポート | サポートされていない |
| SQL Server | サポート | サポート | サポート |
| TiDB | サポート | サポート | サポート |
ダウンロードリンク: https://cdn-thirdparty.starrocks.com/smt.tar.gz?r=2
SMT の使用手順
一般的な手順は次のとおりです:
-
conf/config_prod.conf ファイルを設定します。
-
starrocks-migration-tool を実行します。
-
実行後、SQL スクリプトがデフォルトで result ディレクトリに生成されます。
その後、result ディレクトリ内の SQL スクリプトを使用して、メタデータまたはデータの同期を行うことができます。
SMT の設定
-
[db]: データソースに接続するための情報。typeパラメータで指定されたデータベースタイプに対応するデータソースに接続するための情報を設定します。 -
[other]: 追加の設定。be_numパラメータに実際の BE ノードの数を指定することをお勧めします。 -
flink.starrocks.sink.*: flink-connector-starrocks の設定。詳細な設定と説明については、configuration description を参照してください。 -
[table-rule.1]: データソース内のテーブルをマッチングするためのルール。このルールで設定された正規表現に基づいて CREATE TABLE ステートメントが生成され、データソース内のデータベースとテーブルの名前にマッチします。複数のルールを設定でき、各ルールは対応する結果ファイルを生成します。例えば:[table-rule.1]->result/starrocks-create.1.sql[table-rule.2]->result/starrocks-create.2.sql
各ルールには、データベース、テーブル、および flink-connector-starrocks の設定が含まれている必要があります。
[table-rule.1]
# プロパティを設定するためのデータベースをマッチングするパターン
database = ^database1.*$
# プロパティを設定するためのテーブルをマッチングするパターン
table = ^.*$
schema = ^.*$
############################################
### flink sink の設定
### `connector`、`table-name`、`database-name` は設定しないでください。自動生成されます。
############################################
flink.starrocks.jdbc-url=jdbc:mysql://192.168.1.1:9030
flink.starrocks.load-url=192.168.1.1:8030
flink.starrocks.username=root
flink.starrocks.password=
flink.starrocks.sink.max-retries=10
flink.starrocks.sink.buffer-flush.interval-ms=15000
flink.starrocks.sink.properties.format=json
flink.starrocks.sink.properties.strip_outer_array=true
[table-rule.2]
# プロパティを設定するためのデータベースをマッチングするパターン
database = ^database2.*$
# プロパティを設定するためのテーブルをマッチングするパターン
table = ^.*$
schema = ^.*$
############################################
### flink sink の設定
### `connector`、`table-name`、`database-name` は設定しないでください。自動生成されます。
############################################
flink.starrocks.jdbc-url=jdbc:mysql://192.168.1.1:9030
flink.starrocks.load-url=192.168.1.1:8030
flink.starrocks.username=root
flink.starrocks.password=
flink.starrocks.sink.max-retries=10
flink.starrocks.sink.buffer-flush.interval-ms=15000
flink.starrocks.sink.properties.format=json
flink.starrocks.sink.properties.strip_outer_array=true -
データベース内でシャードに分割された大きなテーブルに対して、別のルールを設定することができます。例えば、
edu_db_1とedu_db_2の 2 つのデータベースにそれぞれcourse_1とcourse_2というテーブルが含まれており、これらのテーブルが同じ構造を持っているとします。これら 2 つのテーブルから 1 つの StarRocks テーブルにデータをロードして分析するために、次のルールを使用できます。[table-rule.3]
# プロパティを設定するためのデータベースをマッチングするパターン
database = ^edu_db_[0-9]*$
# プロパティを設定するためのテーブルをマッチングするパターン
table = ^course_[0-9]*$
schema = ^.*$このルールは自動的に多対一のロード関係を形成します。StarRocks に生成されるテーブルのデフォルト名は
course__auto_shardであり、関連する SOL スクリプトでテーブル名を変更することもできます。例えばresult/starrocks-create.3.sqlです。