すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:StarRocks

最終更新日:Aug 22, 2026

StarRocks コネクタの使用方法について説明します。

背景情報

StarRocks は、次世代の Massively Parallel Processing (MPP) データウェアハウスであり、すべてのシナリオで非常に高速なパフォーマンスと統一された分析エクスペリエンスを提供します。StarRocks には、次の利点があります。

  • StarRocks は MySQL プロトコルと互換性があり、MySQL クライアントと一般的なビジネスインテリジェンス (BI) ツールを使用してデータに接続し、分析できます。

  • StarRocks は分散アーキテクチャを使用しています。

    • データテーブルを水平にパーティション分割し、複数のレプリカで保存します。

    • クラスターは柔軟に拡張でき、最大 10 ペタバイト (PB) のデータを分析できます。

    • MPP フレームワークを使用して並列計算を高速化します。

    • 複数のレプリカをサポートし、フォールトトレランスを提供します。

Flink コネクタはデータをキャッシュし、Stream Load を使用してバッチで結果テーブルに書き込みます。ソーステーブルからは、バッチでデータをフェッチして読み取ります。次の表に、StarRocks コネクタの機能を示します。

カテゴリ

説明

サポートされるタイプ

ソーステーブル、ディメンションテーブル、結果テーブル、データインジェストターゲット

実行モード

ストリーミングモードとバッチモード

データフォーマット

CSV

コネクタ固有のメトリック

なし

API タイプ

DataStream、SQL、およびデータインジェスト用の YAML

結果テーブルでの更新/削除のサポート

はい

前提条件

E-MapReduce にデプロイされた StarRocks クラスター、または Elastic Compute Service (ECS) 上のセルフマネージドの StarRocks クラスターが必要です。

制限事項

  • Ververica Runtime (VVR) 11.1 以降のみがディメンションテーブルとの結合をサポートします。

  • ネットワークアクセスの制限を回避するには、次の StarRocks クラスターポートをセキュリティグループまたはファイアウォールのホワイトリストに追加してください:9030、8030、8040、9060、8060、9020。

  • ターゲットの StarRocks テーブルに非表示の生成列が含まれている場合、Flink ジョブでは書き込む実際の物理列のみを宣言し、生成列のフィールドは除外してください。StarRocks の式パーティショニングによって自動的に作成される非表示の生成列 (例:__generated_partition_column_0) は、外部からの書き込みを受け付けません。デフォルトでは、コネクタは完全なスキーマに基づいて書き込みリクエストを構築するため、ジョブが失敗します。StarRocks の生成列の詳細については、「生成列」をご参照ください。

SQL

特徴

E-MapReduce 上の StarRocks は、CREATE TABLE AS SELECT (CTAS) および CREATE DATABASE AS SELECT (CDAS) 文をサポートします。CTAS は単一テーブルのスキーマとデータを同期し、CDAS はデータベース全体または同じデータベース内の複数のテーブルを同期します。詳細については、「Realtime Compute for Apache Flink の CTAS および CDAS 文を使用して MySQL データベースから StarRocks にデータを同期する」をご参照ください。

構文

CREATE TABLE USER_RESULT(
 name VARCHAR,
 score BIGINT
 ) WITH (
 'connector' = 'starrocks',
 'jdbc-url'='jdbc:mysql://fe1_ip:query_port,fe2_ip:query_port,fe3_ip:query_port?xxxxx',
 'load-url'='fe1_ip:http_port;fe2_ip:http_port;fe3_ip:http_port',
 'database-name' = 'xxx',
 'table-name' = 'xxx',
 'username' = 'xxx',
 'password' = 'xxx'
 );

パラメーター

タイプ

パラメーター

説明

タイプ

必須

デフォルト

備考

一般

connector

使用するコネクタを指定します。

String

はい

値は starrocks である必要があります。

jdbc-url

Java Database Connectivity (JDBC) URL。

String

はい

FE の IP アドレスと JDBC ポートを jdbc:mysql://ip:port の形式で指定します。

database-name

StarRocks データベースの名前。

String

はい

table-name

StarRocks テーブルの名前。

String

はい

username

StarRocks に接続するためのユーザー名。

String

はい

password

StarRocks に接続するためのパスワード。

String

はい

starrocks.create.table.properties

自動テーブル作成のプロパティを指定します。

String

いいえ

エンジンの種類やレプリカ数など、初期のテーブルプロパティを指定します。例:`'starrocks.create.table.properties' = 'buckets 8'` または `'starrocks.create.table.properties' = 'replication_num=1'`。

ソース固有

scan-url

データスキャン URL。

String

いいえ

FE の IP アドレスと HTTP ポートを指定します。フォーマット:fe_ip:http_port;fe_ip:http_port

説明

複数の IP アドレスとポートを指定するには、セミコロン (;) で区切ります。

scan.connect.timeout-ms

flink-connector-starrocks が StarRocks に接続するためのタイムアウト。

このタイムアウト内に接続が確立されない場合、コネクタはエラーを報告します。

String

いいえ

1000

単位:ミリ秒。

scan.params.keep-alive-min

クエリタスクのキープアライブ期間。

String

いいえ

10

scan.params.query-timeout-s

クエリタスクのタイムアウト。

この期間内に結果が返されない場合、システムはクエリタスクを停止します。

String

いいえ

600

単位:秒。

scan.params.mem-limit-byte

BE ノード上の単一クエリのメモリ制限。

String

いいえ

1073741824 (1 GB)

単位:バイト。

scan.max-retries

失敗したクエリの最大再試行回数。

この制限を超えると、コネクタはエラーを報告します。

String

いいえ

1

sink 固有

load-url

データインポート URL。

String

はい

FE の IP アドレスと HTTP ポートを fe_ip:http_port;fe_ip:http_port の形式で指定します。

説明

複数の IP アドレスとポートを指定するには、セミコロン (;) で区切ります。

sink.semantic

書き込みの配信セマンティクス。

String

いいえ

at-least-once

有効な値:

  • at-least-once (デフォルト):データが少なくとも 1 回配信されることを保証します。

  • exactly-once:データが正確に 1 回配信されることを保証します。

sink.buffer-flush.max-bytes

フラッシュ前にバッファーに格納するデータの最大量。

String

いいえ

94371840 (90 MB)

有効値:64 MB から 10 GB。

sink.buffer-flush.max-rows

フラッシュ前にバッファーに格納する行の最大数。

String

いいえ

500000

有効値:1,000 から 5,000,000。

sink.buffer-flush.interval-ms

バッファーのフラッシュ間隔。

String

いいえ

300000

有効値:1,000 ms から 3,600,000 ms。

sink.max-retries

失敗した書き込みの最大再試行回数。

String

いいえ

3

有効値:0 から 1000。

sink.connect.timeout-ms

StarRocks への接続タイムアウト。

String

いいえ

1000

有効値:100 から 60,000。単位:ミリ秒。

sink.properties.*

sink の追加の Stream Load プロパティ。

String

いいえ

これらのパラメーターは Stream Load の動作を制御します。例えば、sink.properties.format は、CSV などのインポートされるデータのフォーマットを指定します。その他のパラメーターについては、「Stream Load」をご参照ください。

ディメンション固有

lookup.cache.enabled

ディメンションテーブルのキャッシュを有効にするかどうかを指定します。

Boolean

いいえ

true

有効な値:

  • true:キャッシュを有効にします。テーブルデータが初めて読み取られた後、システムはそれをメモリにキャッシュします。後続のリクエストは、有効期間内のキャッシュデータを使用して I/O オーバーヘッドを削減します。

  • false:キャッシュを無効にします。各クエリは直接データソースにアクセスします。

重要
  • この機能には、Realtime Compute for Apache Flink エンジン VVR 11.1 以降が必要です。

  • 次のシナリオでは、この機能を無効にすることを推奨します。

    • ディメンションテーブルのデータが頻繁に更新され、リアルタイムデータが必要な場合。

    • テーブルに大量のデータが含まれており、メモリオーバーフローのリスクがある場合。

データ型のマッピング

StarRocks データ型

Flink データ型

NULL

NULL

BOOLEAN

BOOLEAN

TINYINT

TINYINT

SMALLINT

SMALLINT

INT

INT

BIGINT

BIGINT

BIGINT UNSIGNED

説明

Realtime Compute for Apache Flink エンジン VVR 8.0.10 以降が必要です。

DECIMAL(20,0)

LARGEINT

DECIMAL(20,0)

FLOAT

FLOAT

DOUBLE

DOUBLE

DATE

DATE

DATETIME

TIMESTAMP

DECIMAL

DECIMAL

DECIMALV2

DECIMAL

DECIMAL32

DECIMAL

DECIMAL64

DECIMAL

DECIMAL128

DECIMAL

CHAR(m)

説明
  • VVR 8.0.10 は、MySQL と StarRocks のエンコーディングの違いに対応するため、CHAR の長さを自動的に 3 倍に拡張します (m=n*3、ここで n<=85)。

  • VVR 8.0.11 以降は、MySQL と StarRocks のエンコーディングの違いに対応するため、CHAR の長さを自動的に 4 倍に拡張します (m=n*4、ここで n<=63)。

  • StarRocks の CHAR 型の最大長は 255 です。したがって、Flink は、自動的に拡張された長さが 255 を超えない場合にのみ、CHAR 型を StarRocks の CHAR 型にマッピングします。

CHAR(n)

VARCHAR(m)

説明
  • VVR 8.0.10 は、MySQL と StarRocks のエンコーディングの違いに対応するため、VARCHAR の長さを自動的に 3 倍に拡張します (m=n*3、ここで n>85)。

  • VVR 8.0.11 以降は、MySQL と StarRocks のエンコーディングの違いに対応するため、VARCHAR の長さを自動的に 4 倍に拡張します (m=n*4、ここで n>63)。

  • StarRocks の CHAR 型の最大長は 255 です。したがって、Flink の CHAR 型の自動拡張された長さが 255 を超える場合、Flink はその型を StarRocks の VARCHAR 型にマッピングします。

CHAR(n)

VARCHAR

STRING

VARBINARY

説明

Realtime Compute for Apache Flink エンジン VVR 8.0.10 以降が必要です。

VARBINARY

コード例

CREATE TEMPORARY TABLE IF NOT EXISTS `runoob_tbl_source` (
  `runoob_id` BIGINT NOT NULL,
  `runoob_title` STRING NOT NULL,
  `runoob_author` STRING NOT NULL,
  `submission_date` DATE NULL
) WITH (
  'connector' = 'starrocks',
  'jdbc-url' = 'jdbc:mysql://ip:9030',
  'scan-url' = 'ip:18030',
  'database-name' = 'db_name',
  'table-name' = 'table_name',
  'password' = 'xxxxxxx',
  'username' = 'xxxxx'
);
CREATE TEMPORARY TABLE IF NOT EXISTS `runoob_tbl_sink` (
  `runoob_id` BIGINT NOT NULL,
  `runoob_title` STRING NOT NULL,
  `runoob_author` STRING NOT NULL,
  `submission_date` DATE NULL
  PRIMARY KEY(`runoob_id`)
  NOT ENFORCED
) WITH (
  'jdbc-url' = 'jdbc:mysql://ip:9030',
  'connector' = 'starrocks',
  'load-url' = 'ip:18030',
  'database-name' = 'db_name',
  'table-name' = 'table_name',
  'password' = 'xxxxxxx',
  'username' = 'xxxx',
  'sink.buffer-flush.interval-ms' = '5000'
);

INSERT INTO runoob_tbl_sink SELECT * FROM runoob_tbl_source;
説明

StarRocks ではプライマリキー列を NULLABLE にできます。しかし、Flink は null 許容列を含むプライマリキーをサポートしていません。Flink のデータ整合性モデルでは、プライマリキーは一意で null 非許容である必要があります。そうでない場合、Flink はエラー Invalid primary key. Column 'xxx' is nullable をスローします。詳細については、「「Invalid primary key. Column 'xxx' is nullable.」エラー」をご参照ください。

データインジェスト

StarRocks パイプラインコネクタを使用して、アップストリームデータソースから外部の StarRocks データベース にデータレコードとスキーマ変更を書き込みます。StarRocks コネクタは、コミュニティ版と、Alibaba Cloud のフルマネージド EMR Serverless StarRocks の両方をサポートしています。

特徴

  • データベースとテーブルの自動作成。

    アップストリームのデータベースまたはテーブルがダウンストリームの StarRocks インスタンスに存在しない場合、コネクタはそれを自動的に作成します。table.create.properties.* パラメーターを使用して、自動テーブル作成のオプションを構成できます。

  • スキーマ変更の同期。

    StarRocks コネクタは、CreateTableEvent、AddColumnEvent、および DropColumnEvent イベントをダウンストリームデータベースに自動的に適用します。

  • VVR 11.1 以降は、互換性のある列の型の変更をサポートします。詳細については、「ALTER TABLE | StarRocks」をご参照ください。

注意事項

  • 同期される各テーブルにはプライマリキーが必要です。プライマリキーのないテーブルの場合、データをダウンストリームに書き込むには、transform ブロックでプライマリキーを指定する必要があります。例:

    transform:
      - source-table: ...
        primary-keys: id, ...
  • 自動作成されたテーブルでは、バケットキーはプライマリキーと同じであり、テーブルにパーティションキーを持つことはできません。

  • スキーマ変更を同期する場合、新しい列は既存の列の末尾にのみ追加できます。デフォルトの Lenient スキーマ変更モードでは、他の位置への挿入は自動的に末尾に移動されます。

  • StarRocks バージョン 2.5.7 より前を使用する場合、table.create.num-buckets パラメーターでバケット数を明示的に指定する必要があります。StarRocks 2.5.7 以降では、適切なバケット数を自動的に決定できます。

  • StarRocks 3.2 以降を使用する場合、スキーマ変更を高速化するために table.create.properties.fast_schema_evolution オプションを有効にすることを推奨します。

  • CDC YAML を使用して EMR Serverless StarRocks にデータをインジェストすると、ストリーミングの問題が発生する場合があります。次のいずれかの回避策を使用できます。

    • Flink SQL StarRocks コネクタを使用し、sink.version=V1 パラメーターを設定します。

    • FE パラメーター emr_internal_redirect を有効にします。

    • SLB の代わりに StarRocks プライベートゾーンのドメイン名を使用します。

構文

source:
  ...

sink:
  type: starrocks
  name: StarRocks Sink
  jdbc-url: jdbc:mysql://127.0.0.1:9030
  load-url: 127.0.0.1:8030
  username: root
  password: pass
  sink.buffer-flush.interval-ms: 5000   # データフラッシュ間隔を設定します。

構成

パラメーター

説明

タイプ

必須

デフォルト

備考

type

sink コネクタタイプを指定します。

String

はい

starrocks に設定します。

name

sink の表示名。

String

いいえ

jdbc-url

データベース接続用の JDBC URL。

String

はい

カンマ (,) で区切られた複数のアドレスをサポートします。例:jdbc:mysql://fe_host1:fe_query_port1,fe_host2:fe_query_port2,fe_host3:fe_query_port3

load-url

Stream Load 用の FE ノードの HTTP URL。

String

はい

セミコロン (;) で区切られた複数のアドレスをサポートします。例:fe_host1:fe_http_port1;fe_host2:fe_http_port2

username

StarRocks 接続のユーザー名。

String

はい

このユーザーは、ターゲットテーブルに対して少なくとも SELECT および INSERT 権限を持っている必要があります。StarRocks の GRANT コマンドで必要な権限を付与できます。

password

StarRocks 接続のパスワード。

String

はい

sink.semantic

データ書き込みの配信セマンティクス。

String

いいえ

at-least-once

at-least-once のみがサポートされています。このパラメーターを明示的に exactly-once に設定してもエラーは発生しませんが、値は自動的に at-least-once にリセットされます。exactly-once セマンティクスを使用するには、Flink SQL StarRocks コネクタを使用してください。詳細については、このトピックの「SQL」セクションをご参照ください。

sink.label-prefix

Stream Load ジョブのラベルプレフィックス。

String

いいえ

値には英字、数字、ハイフン (-)、アンダースコア (_) のみを含めることができます。他の文字を使用すると、ロードが失敗する可能性があります。

sink.connect.timeout-ms

HTTP 接続を確立するためのタイムアウト。

Integer

いいえ

30000

単位:ミリ秒。値は 100 から 60000 の間でなければなりません。

sink.wait-for-continue.timeout-ms

サーバーからの 100 Continue 応答を待機するためのタイムアウト。

Integer

いいえ

30000

単位:ミリ秒。値は 3000 から 600000 の間でなければなりません。

sink.buffer-flush.max-bytes

フラッシュがトリガーされる前のメモリ内キャッシュの最大サイズ (バイト単位)。

Long

いいえ

94371840

単位:バイト。値は 64 MB から 10 GB の間でなければなりません。

説明
  • このキャッシュサイズはすべてのテーブルで共有されます。バッファーがいっぱいになると、コネクタはフラッシュするいくつかのテーブルを選択します。

  • 値を大きくするとスループットが向上する可能性がありますが、取り込みレイテンシーが増加する場合があります。

sink.buffer-flush.max-rows

フラッシュがトリガーされる前のメモリ内キャッシュの最大行数。

Long

いいえ

500000

値は 1,000 から 5,000,000 の間でなければなりません。

sink.buffer-flush.interval-ms

各テーブルのバッファーのフラッシュ間の時間間隔。

Long

いいえ

300000

単位:ミリ秒。

説明

少量のデータを同期するジョブの場合、データが永続化されるまでの長い遅延を避けるために、この値を小さくしてください。

sink.max-retries

最大再試行回数。

Long

いいえ

3

値は 0 から 1000 の間でなければなりません。

sink.scan-frequency.ms

コネクタがバッファーをフラッシュするかどうかをチェックする頻度。

Long

いいえ

50

単位:ミリ秒。

sink.io.thread-count

Stream Load に使用されるスレッド数。

Integer

いいえ

2

sink.at-least-once.use-transaction-stream-load

データインジェストに Stream Load トランザクションインターフェイス を使用するかどうかを指定します。

Boolean

いいえ

true

このオプションは、データベースがサポートしている場合にのみ有効です。

sink.ignore.update-before

更新操作で update-before レコードを無視するかどうかを指定します。

Boolean

いいえ

true

Transform モジュールを介してプライマリキーが変更された場合 (たとえば、primary-keys がアップストリームとは異なるプライマリキーを指定した場合)、sink.ignore.update-beforefalse に設定します。そうしないと、古いプライマリキーに対応する行が削除されず、古いデータが残ってしまいます。

このパラメーターは Ververica Runtime (VVR) 11.8 以降でのみサポートされます。

sink.ignore.delete

delete レコードを無視するかどうかを指定します。

Boolean

いいえ

false

このパラメーターを true に設定すると、delete レコードはフィルターで除外され、StarRocks に書き込まれません。この設定を使用して、sink に既存データを保持し、挿入および更新操作のみを同期します。

このパラメーターは Ververica Runtime (VVR) 11.8 以降でのみサポートされます。

sink.properties.*

sink の追加プロパティ。

String

いいえ

サポートされているプロパティについては、「STREAM LOAD」をご参照ください。

table.create.num-buckets

自動作成されるテーブルのバケット数。

Integer

いいえ

  • StarRocks 2.5.7 以降では、このパラメーターはオプションであり、バケット数は自動的に推論されます。

  • StarRocks 2.5.6 以前では、このパラメーターは必須です。

table.create.properties.*

自動テーブル作成の追加プロパティ。

String

いいえ

たとえば、'table.create.properties.fast_schema_evolution' = 'true' を渡して、高速なスキーマ変更を有効にできます。詳細については、StarRocks ドキュメントをご参照ください。

table.schema-change.timeout

スキーマ変更操作のタイムアウト。

Duration

いいえ

30 min

秒単位の整数でなければなりません。

説明

スキーマ変更操作がこの制限を超えると、ジョブは失敗します。

unicode-char.max-bytes

各 Unicode 文字に割り当てるバイト数。

Integer

いいえ

3

CDC では、VARCHAR 型の長さは文字数で測定されますが、StarRocks ではバイト数で測定されます。

ほとんどの場合、Unicode 文字は UTF-8 エンコーディング後も 3 バイトを超えません。ただし、一部のまれな文字や絵文字は 4 バイト以上を占有する場合があります。

sink.socket.time

StarRocks にデータをフラッシュする際の HTTP クライアントのタイムアウト。

Long

いいえ

-1

データを StarRocks にフラッシュする際に Stream Load リクエストを送信するための HTTP クライアントのタイムアウト (ミリ秒単位)。値 -1 はシステムのデフォルトを使用し、タイムアウトがないことを意味します。

このパラメーターは Ververica Runtime (VVR) 11.8 以降でのみサポートされます。

sink.close.eof-timeout-ms

sink を閉じるためのタイムアウト。

Long

いいえ

60000

ジョブが閉じるときにフラッシュキューが終了するのを待つためのタイムアウト (ミリ秒単位)。このパラメーターは Ververica Runtime (VVR) 11.8 以降でのみサポートされます。

組み込みカタログの再利用

VVR 11.5 以降では、[データ管理] ページで作成された組み込みの StarRocks カタログを Flink CDC データインジェストジョブで直接参照できます。これにより、手動で設定する必要があるプロパティの数が減り、構成が簡素化されます。

sink:
  type: starrocks
  using.built-in-catalog: starrocks_catalog

データインジェストジョブは、次の StarRocks カタログオプションを自動的に再利用できます。

  • jdbc-url

  • http-url

  • username

  • password

  • table.num-buckets

これらの値をオーバーライドするには、対応する YAML オプションを明示的に設定します。YAML オプションが優先されます。

型マッピング

説明

StarRocks は、すべての CDC YAML 型をサポートしているわけではありません。サポートされていない型を sink に書き込むと、ジョブは失敗します。変換で CAST ビルトイン関数を使用してサポートされていないデータを変換するか、プロジェクション文を使用して結果テーブルから削除することができます。詳細については、「Flink CDC データインジェストジョブを開発する」をご参照ください。

CDC 型

StarRocks 型

備考

TINYINT

TINYINT

SMALLINT

SMALLINT

INT

INT

BIGINT

BIGINT

FLOAT

FLOAT

DOUBLE

DOUBLE

BOOLEAN

BOOLEAN

DATE

DATE

TIMESTAMP

DATETIME

TIMESTAMP_LTZ

DATETIME

DECIMAL(p, s)

DECIMAL(p, s)

StarRocks はプライマリキーに DECIMAL をサポートしていないため、コネクタはアップストリームの DECIMAL プライマリキー列を同期された StarRocks スキーマで自動的に VARCHAR に変換します。

CHAR(n)

(n <= 85)

CHAR(n × 3)

CDC は文字数で長さを測定しますが、StarRocks はバイト数を使用します。コネクタは、マルチバイト UTF-8 文字に対応するために長さを 3 倍にします。

説明

StarRocks の CHAR 型の最大長は 255 です。したがって、長さが 85 までの CDC CHAR 型のみが StarRocks の CHAR 型にマッピングされます。

説明

unicode-char.max-bytes パラメーターを設定して、各 Unicode 文字により多くのバイトを割り当てることができます。

CHAR(n)

(n > 85)

VARCHAR(n × 3)

CDC は文字数で長さを測定しますが、StarRocks はバイト数を使用します。コネクタは、マルチバイト UTF-8 文字に対応するために長さを 3 倍にします。

説明

CDC は文字数で長さを測定しますが、StarRocks はバイト数を使用します。コネクタは長さを 3 倍にします。結果が StarRocks の CHAR 型の 255 バイト制限を超えるため、VARCHAR にマッピングされます。

説明

unicode-char.max-bytes パラメーターを設定して、各 Unicode 文字により多くのバイトを割り当てることができます。

VARCHAR(n)

VARCHAR(n × 3)

CDC は文字数で長さを測定しますが、StarRocks はバイト数を使用します。コネクタは、マルチバイト UTF-8 文字に対応するために長さを 3 倍にします。

説明

unicode-char.max-bytes パラメーターを設定して、各 Unicode 文字により多くのバイトを割り当てることができます。

BINARY(n)

BINARY(n+2)

データ整合性を確保するために 2 バイトのパディングが追加されます。

VARBINARY(n)

VARBINARY(n+1)

データ整合性を確保するために 1 バイトのパディングが追加されます。

スキーマ変更

データインジェスト sink として、StarRocks は次のスキーマ変更イベントをサポートします。

  • CREATE TABLE イベント

    説明

    ダウンストリームの StarRocks テーブルが既に存在する場合、コネクタは再度作成しようとはしません。ダウンストリームのテーブルスキーマがアップストリームのスキーマと互換性があることを確認してください。

  • ADD COLUMN イベント

    説明

    StarRocks では、プライマリキー列がテーブルの最初に表示される必要があります。新しい列は、それらの後に追加する必要があります。

  • DROP COLUMN イベント

  • TRUNCATE TABLE EVENT

  • DROP TABLE EVENT

コード例

以下の例は、一般的なシナリオの構成を示しています。

単一テーブルの同期

単一の MySQL テーブルを StarRocks に同期します。送信先のデータベースとテーブルが存在しない場合、コネクタは自動的にプライマリキーテーブルを作成します。

pipeline:
          name: MySQL to StarRocks Pipeline
      source:
        type: mysql
        name: MySQL Source
        hostname: <yourHostname>
        port: 3306
        username: <yourUsername>
        password: ${secret_values.mysql_password}
        tables: test_db.test_source_table
        server-id: 5401-5499
        # (オプション) ジョブを再起動せずに、増分フェーズで新しく追加されたテーブルからデータを同期します。
        scan.binlog.newly-added-table.enabled: true
        # (オプション) テーブルと列のコメントを送信先に同期します。
        include-comments.enabled: true
        # (オプション) 読み取りパフォーマンスを向上させるために、キャプチャされたテーブルのバイナリログのみを逆シリアル化します。
        scan.only.deserialize.captured.tables.changelog.enabled: true
      
      sink:
        type: starrocks
        name: StarRocks Sink
        jdbc-url: jdbc:mysql://<yourFeHostname>:9030
        load-url: <yourFeHostname>:8030
        username: <yourUsername>
        password: ${secret_values.starrocks_password}
       
        # (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
        sink.buffer-flush.interval-ms: 5000
        # (オプション) アップストリームの文字セットが utf8mb4 の場合、テキストの切り捨てを防ぐためにこのパラメーターを 4 に設定します。デフォルト:3。
        unicode-char.max-bytes: 4
        # (オプション) 自動作成されるテーブルのバケット数。このパラメーターは StarRocks バージョン 2.5.7 より前では必須です。それ以降のバージョンでは自動的に値を推論できます。
        table.create.num-buckets: 8
        # (オプション) 自動作成されるテーブルのレプリカ数。クラスターに基づいてこの値を構成します。
        table.create.properties.replication_num: 3
        # (オプション) StarRocks 3.2 以降では、このオプションを有効にしてスキーマ変更を高速化します。
        table.create.properties.fast_schema_evolution: true
        # 注:変換を使用してプライマリキーを変更する場合は、sink.ignore.update-before: false も設定する必要があります。
        # そうしないと、古いプライマリキーに関連付けられた行が送信先に残ります。
      
      pipeline:
        name: MySQL to StarRocks Pipeline

データベース全体の同期

MySQL データベース内のすべてのテーブルを StarRocks に同時に同期します。コネクタは送信先のデータベースとプライマリキーテーブルを自動的に作成するため、各テーブルを事前に作成する必要はありません。

source:
        type: mysql
        name: MySQL Source
        hostname: <yourHostname>
        port: 3306
        username: <yourUsername>
        password: ${secret_values.mysql_password}
        # 正規表現を使用して、データベース内のすべてのテーブルを照合します。複数のデータベースを照合するには、パターンをカンマで区切ります。
        tables: test_db.\.*
        server-id: 5401-5499
        # (オプション) ジョブを再起動せずに、増分フェーズで新しく追加されたテーブルからデータを同期します。
        scan.binlog.newly-added-table.enabled: true
        # (オプション) テーブルと列のコメントを送信先に同期します。
        include-comments.enabled: true
      
      sink:
        type: starrocks
        name: StarRocks Sink
        jdbc-url: jdbc:mysql://<yourFeHostname>:9030
        load-url: <yourFeHostname>:8030
        username: <yourUsername>
        password: ${secret_values.starrocks_password}
        # (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
        sink.buffer-flush.interval-ms: 5000
        # (オプション) アップストリームの文字セットが utf8mb4 の場合、テキストの切り捨てを防ぐためにこのパラメーターを 4 に設定します。デフォルト:3。
        unicode-char.max-bytes: 4
        # (オプション) 自動作成されるテーブルのバケット数。このパラメーターは StarRocks バージョン 2.5.7 より前では必須です。それ以降のバージョンでは自動的に値を推論できます。
        table.create.num-buckets: 8
        # (オプション) 自動作成されるテーブルのレプリカ数。クラスターに基づいてこの値を構成します。
        table.create.properties.replication_num: 3
        # (オプション) StarRocks 3.2 以降では、このオプションを有効にしてスキーマ変更を高速化します。
        table.create.properties.fast_schema_evolution: true
      
      pipeline:
        name: MySQL to StarRocks Pipeline

データベース全体の同期中に特定のテーブルを除外

データベース全体を同期する場合、正規表現を使用して、一時テーブルや機密テーブルなど、送信先に同期したくないテーブルをスキップします。

source:
        type: mysql
        name: MySQL Source
        hostname: <yourHostname>
        port: 3306
        username: <yourUsername>
        password: ${secret_values.mysql_password}
        tables: test_db.\.*
        # この正規表現に一致するテーブルは同期されません。
        tables.exclude: test_db.tmp_.\*
        server-id: 5401-5499
      
      sink:
        type: starrocks
        name: StarRocks Sink
        jdbc-url: jdbc:mysql://<yourFeHostname>:9030
        load-url: <yourFeHostname>:8030
        username: <yourUsername>
        password: ${secret_values.starrocks_password}
        # (オプション) ロードインターフェイスのバージョン。V2 には StarRocks 2.4 以降が必要です。EMR Serverless StarRocks でストリーミングの問題が発生した場合は、V1 を使用してください。
        sink.version: V2
        # (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
        sink.buffer-flush.interval-ms: 5000
        # (オプション) 自動作成されるテーブルのバケット数。このパラメーターは StarRocks バージョン 2.5.7 より前では必須です。
        table.create.num-buckets: 8
        # (オプション) StarRocks 3.2 以降では、このオプションを有効にしてスキーマ変更を高速化します。
        table.create.properties.fast_schema_evolution: true
      
      pipeline:
        name: MySQL to StarRocks Pipeline

指定したデータベースとテーブルへの同期

ODS レイヤーデータベースに書き込む場合など、送信先の StarRocks データベースまたはテーブル名をアップストリーム名と異なるものにする必要がある場合は、ルートを使用して名前を変更します。

source:
        type: mysql
        name: MySQL Source
        hostname: <yourHostname>
        port: 3306
        username: <yourUsername>
        password: ${secret_values.mysql_password}
        tables: test_db.\.*
        server-id: 5401-5499
      
      sink:
        type: starrocks
        name: StarRocks Sink
        jdbc-url: jdbc:mysql://<yourFeHostname>:9030
        load-url: <yourFeHostname>:8030
        username: <yourUsername>
        password: ${secret_values.starrocks_password}
        # (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
        sink.buffer-flush.interval-ms: 5000
        # (オプション) 自動作成されるテーブルのバケット数。このパラメーターは StarRocks バージョン 2.5.7 より前では必須です。
        table.create.num-buckets: 8
      
      route:
        # MySQL の test_db データベース内のすべてのテーブルを、テーブル名を変更せずに StarRocks の test_db2 データベースに同期します。
        # <> は、一致したソーステーブル名に置き換えられるプレースホルダーです。
        - source-table: test_db.\.*
          sink-table: test_db2.<>
          replace-symbol: <>
      
      pipeline:
        name: MySQL to StarRocks Pipeline

シャーディングされたテーブルのマージ

同一のスキーマを持つ複数のシャーディングされたテーブルを単一の StarRocks テーブルにマージして、クエリと分析を統合します。

source:
        type: mysql
        name: MySQL Source
        hostname: <yourHostname>
        port: 3306
        username: <yourUsername>
        password: ${secret_values.mysql_password}
        # user_0 や user_1 など、すべてのシャーディングされたテーブルを照合します。
        tables: test_db.user\.*
        server-id: 5401-5499
      
      sink:
        type: starrocks
        name: StarRocks Sink
        jdbc-url: jdbc:mysql://<yourFeHostname>:9030
        load-url: <yourFeHostname>:8030
        username: <yourUsername>
        password: ${secret_values.starrocks_password}
        # (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
        sink.buffer-flush.interval-ms: 5000
        # (オプション) マージされたテーブルの場合、合計データ量に基づいてバケット数を明示的に指定します。
        table.create.num-buckets: 8
      
      route:
        # すべてのシャーディングされたテーブルを StarRocks の test_db.user テーブルにマージします。
        - source-table: test_db.user\.*
          sink-table: test_db.user
      
      pipeline:
        name: MySQL to StarRocks Pipeline

EVOLVE モードの有効化

デフォルトでは、LENIENT モードは、列の削除、テーブルの削除、テーブルの切り捨てなどのスキーマ変更を送信先に同期しません。厳密なスキーマ同期が必要な場合は、EVOLVE モードを有効にします。このモードには重大な制限があるため、使用する前に以下の注意事項を確認してください。

制限事項と注意事項

  • 列名の変更はサポートされていません。アップストリームで列名の変更イベントが発生すると、ジョブは失敗します。

  • 列の削除、テーブルの削除、またはテーブルの切り捨ては、送信先に適用されます。アップストリームでの偶発的な操作は、送信先テーブルに直接影響します。デフォルトの LENIENT モードは、テーブルの削除または切り捨てイベントを同期しないため、より安全です。

  • ステートなしでジョブを再起動し、sink テーブルを削除しない場合、アップストリームと sink のスキーマの不一致によりジョブが失敗する可能性があります。ダウンストリームのテーブルスキーマを手動で調整する必要があります。

source:
        type: mysql
        name: MySQL Source
        hostname: <yourHostname>
        port: 3306
        username: <yourUsername>
        password: ${secret_values.mysql_password}
        tables: test_db.test_source_table
        server-id: 5401-5499
      
      sink:
        type: starrocks
        name: StarRocks Sink
        jdbc-url: jdbc:mysql://<yourFeHostname>:9030
        load-url: <yourFeHostname>:8030
        username: <yourUsername>
        password: ${secret_values.starrocks_password}
      
      pipeline:
        name: MySQL to StarRocks Pipeline
        # EVOLVE モードを有効にして、スキーマの変更を厳密に同期します。列名の変更など、サポートされていない変更が発生するとジョブは失敗します。
        schema.change.behavior: evolve