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

Realtime Compute for Apache Flink:Hologres YAML コネクタによるデータインジェスト

最終更新日:Apr 29, 2026

このトピックでは、Hologres コネクタを使用して YAML データインジェストデプロイメントでデータを同期する方法について説明します。

背景情報

Hologres は、大規模なリアルタイム書き込み、更新、分析をサポートするリアルタイムデータウェアハウスエンジンです。Hologres は PostgreSQL プロトコルと互換性があり、標準 SQL をサポートしています。ペタバイト規模のデータに対するオンライン分析処理 (OLAP) およびアドホッククエリをサポートし、高い同時実行性と低遅延でデータを提供します。Hologres は MaxCompute、Realtime Compute for Apache Flink、DataWorks と統合され、オンラインおよびオフラインのデータウェアハウスソリューションを提供します。次の表に、Hologres YAML コネクタの機能を示します。

項目

説明

テーブルタイプ

Sink

実行モード

ストリーミングモードおよびバッチモード

データ形式

該当なし

メトリクス

  • numRecordsOut

  • numRecordsOutPerSecond

説明

詳細については、「Metrics」をご参照ください。

API タイプ

YAML

結果テーブルでの更新または削除

サポートされています

機能

機能

説明

フルデータベース同期

データベース全体または複数のテーブルからフルデータおよび増分データをリアルタイムで対応する結果テーブルに同期します。

スキーマ変更の同期

ソーステーブルのスキーマ変更(列の追加、削除、名前の変更など)をリアルタイムで対応する結果テーブルに同期します。

シャード化されたデータベースおよびテーブルの同期

正規表現を使用して、複数のシャード化されたデータベース間で名前によってソーステーブルをマッチングします。これらのテーブルからのデータはマージされ、対応する名前のダウンストリーム結果テーブルに同期されます。

パーティションテーブルへの書き込み

アップストリームテーブルからのデータを Hologres パーティションテーブルに書き込みます。

データ型マッピング

複数の戦略を使用して、アップストリームのデータ型をより広い範囲の Hologres データ型にマッピングします。

構文

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}

パラメーター

パラメーター

説明

必須

デフォルト

備考

type

Sink のタイプです。

String

はい

なし

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

name

Sink の名前です。

String

いいえ

なし

該当なし。

dbname

データベース名です。

String

はい

なし

該当なし。

username

データベースアクセス用のユーザー名です。Alibaba Cloud アカウントの AccessKey ID を使用してください。

String

はい

なし

詳細については、「AccessKey ID および AccessKey Secret の確認方法」をご参照ください。

重要

AccessKey を公開しないようにするため、変数を使用してその値を指定してください。詳細については、「プロジェクト変数」をご参照ください。

password

データベースアクセス用のパスワードです。Alibaba Cloud アカウントの AccessKey Secret を使用してください。

String

はい

なし

endpoint

Hologres サービスのエンドポイントです。

String

はい

なし

詳細については、「アクセスエンドポイント」をご参照ください。

jdbcRetryCount

接続が失敗した場合の書き込みおよびクエリ操作のリトライ回数です。

Integer

いいえ

10

該当なし。

jdbcRetrySleepInitMs

各リトライ試行時の固定待機時間です。

Long

いいえ

1000

単位:ミリ秒。実際のリトライ待機時間は、次の数式で計算されます: jdbcRetrySleepInitMs + retry * jdbcRetrySleepStepMs

jdbcRetrySleepStepMs

各リトライ試行時の増分待機時間です。

Long

いいえ

5000

単位:ミリ秒。実際のリトライ待機時間は、次の数式で計算されます: jdbcRetrySleepInitMs + retry * jdbcRetrySleepStepMs

jdbcConnectionMaxIdleMs

JDBC 接続の最大アイドル時間です。

Long

いいえ

60000

単位:ミリ秒。接続がこの期間以上アイドル状態になると、切断されて解放されます。

jdbcMetaCacheTTL

ローカルにキャッシュされた TableSchema 情報の有効期限です。

Long

いいえ

60000

単位:ミリ秒。

jdbcMetaAutoRefreshFactor

キャッシュリフレッシュのトリガーを決定する係数です。残りの有効期間がトリガー時間未満になると、システムは自動的にキャッシュをリフレッシュします。

Integer

いいえ

4

残りのキャッシュ有効期間は次のように計算されます: 残りのキャッシュ有効期間 = キャッシュ有効期限 - キャッシュがアクティブになっている時間。 自動リフレッシュ後、キャッシュのアクティブ時間は 0 にリセットされます。

トリガー時間は次の数式で計算されます: jdbcMetaCacheTTL / jdbcMetaAutoRefreshFactor.

mutatetype

データ書き込みモードです。

String

いいえ

INSERT_OR_UPDATE

Hologres 物理テーブルにプライマリキーが設定されている場合、Hologres sink はプライマリキーに基づいて 1 回限りのセマンティクスを保証します。重複するプライマリキーを持つデータが到着した場合、 mutatetype パラメーターにより、結果テーブルの更新方法が決定されます。 mutatetype パラメーターは次の値をサポートしています:

  • INSERT_OR_IGNORE:最初に発生したデータを保持し、それ以降のすべてのデータを無視します。

  • INSERT_OR_REPLACE:新しいデータで既存の行全体を置き換えます。

  • INSERT_OR_UPDATE:既存の行の一部の列のみを更新します。たとえば、テーブルに a、b、c、d の 4 つの列があり、a がプライマリキー (PK) であるとします。Hologres に a および b 列のデータのみを書き込み、同じ PK を持つ行がすでに存在する場合、システムは b 列のみを更新します。c 列および d 列は変更されません。

createparttable

パーティションテーブルへの書き込み時に、存在しないパーティションを自動的に作成するかどうかを指定します。

Boolean

いいえ

false

該当なし。

sink.delete-strategy

取り消しメッセージの処理方法を指定します。

String

いいえ

None

有効値:

  • IGNORE_DELETE:Update Before および Delete メッセージを無視します。この値は、データの挿入または更新のみが必要で、削除が不要なシナリオに適しています。

  • DELETE_ROW_ON_PK:Flink フレームワークがプライマリキーに基づいて削除操作を適用します。更新操作の場合、古いデータをまず削除してから新しいデータを挿入することで、データの精度を保証します。

jdbcWriteBatchSize

JDBC モードにおいて、バッチ書き込み前に Hologres sink がバッファーするレコードの最大数です。

Integer

いいえ

256

単位:行。

説明

jdbcWriteBatchSizejdbcWriteBatchByteSize、および jdbcWriteFlushInterval パラメーターには OR 関係があります。これら 3 つのパラメーターをすべて設定した場合、いずれか 1 つの条件が満たされるとすぐに結果データが書き込まれます。

jdbcWriteBatchByteSize

JDBC モードにおいて、このパラメーターは、バッチを送信先に書き込む前に Hologres sink がバッファーするデータの最大サイズ(バイト単位)を指定します。

Long

いいえ

2,097,152 バイト (2 MB)

説明

jdbcWriteBatchSizejdbcWriteBatchByteSize、および jdbcWriteFlushInterval パラメーターには OR 関係があります。これら 3 つのパラメーターをすべて設定した場合、いずれか 1 つの条件が満たされるとすぐに結果データが書き込まれます。

jdbcWriteFlushInterval

JDBC モードにおいて、このパラメーターは、Hologres sink がバッファーされたデータを Hologres に書き込むまでに待機する最大時間を指定します。

Long

いいえ

10000

単位:ミリ秒。

説明

jdbcWriteBatchSizejdbcWriteBatchByteSize、および jdbcWriteFlushInterval パラメーターには OR 関係があります。これら 3 つのパラメーターをすべて設定した場合、いずれか 1 つの条件が満たされるとすぐに結果データが書き込まれます。

ignoreNullWhenUpdate

mutatetypeINSERT_OR_UPDATE に設定されている場合に、着信データ内の null 値を無視するかどうかを指定します。

Boolean

いいえ

false

有効値:

  • false (デフォルト):null 値を Hologres 結果テーブルに書き込みます。

  • true:着信データ内の null 値を無視します。

jdbcEnableDefaultForNotNullColumn

NOT NULL 列に定義されたデフォルト値がない状態で null が書き込まれる場合に、デフォルト値を挿入するかどうかを指定します。

Boolean

いいえ

true

有効値:

  • true (デフォルト):コネクタがデフォルト値を挿入することを許可します。ルールは次のとおりです:

    • String 型の列の場合、空文字列 ("") が書き込まれます。

    • Number 型の列の場合、0 が書き込まれます。

    • Date、timestamp、または timestamptz 型の列の場合、 1970-01-01 00:00:00 が書き込まれます。

  • false:デフォルト値を挿入しません。NOT NULL 列に null 値が書き込まれると、例外がスローされます。

remove-u0000-in-text.enabled

書き込み前に文字列からヌル文字 (\u0000) を削除するかどうかを指定します。

Boolean

いいえ

false

有効値:

  • false (デフォルト):コネクタはデータを処理しません。ただし、ダーティデータが検出された場合、書き込み操作で次の例外がスローされる可能性があります:ERROR: invalid byte sequence for encoding "UTF8": 0x00

    このような場合は、ソーステーブルでダーティデータを処理するか、SQL ステートメントでデータ処理ロジックを定義する必要があります。

  • true:コネクタが文字列から \u0000 文字を削除して、書き込み例外を防止します。

deduplication.enabled

jdbc モードおよび jdbc_fixed モードにおいて、書き込み前に各バッチ内で重複排除を実行するかどうかを指定します。

Boolean

いいえ

true

有効値:

  • true (デフォルト):バッチ内で重複排除を有効にします。複数のレコードが同じプライマリキーを持つ場合、最後のレコードのみが保持されます。たとえば、最初のフィールドがプライマリキーである 2 つのフィールドを持つデータを考えてみます:

    • レコード INSERT (1,'a') および INSERT (1,'b') が順番に到着します。重複排除後、後のレコード (1,'b') のみが Hologres 結果テーブルに書き込まれます。

    • Hologres 結果テーブルにすでにレコード (1,'a') が含まれているとします。DELETE (1,'a') および INSERT (1,'b') レコードが順番に到着すると、最後に到着したレコード (1,'b') のみが Hologres に書き込まれます。これは削除後に挿入するのではなく、直接更新として扱われます。

  • false:バッチ処理中に重複排除は実行されません。新しいレコードが現在のバッチ内にすでに存在するレコードと同じプライマリキーを持つ場合、現在のバッチが最初に書き込まれます。書き込みが完了した後、新しいレコードが処理されます。

sink.type-normalize-strategy

データ型マッピング戦略です。

String

いいえ

STANDARD

Hologres sink がアップストリームのデータ型を Hologres 型に変換するために使用する戦略です。

  • STANDARD:Flink CDC 型を標準的な PostgreSQL (PG) 型に変換します。

  • BROADEN:Flink CDC 型をより広い範囲の Hologres 型に変換します。

  • ONLY_BIGINT_OR_TEXT:すべての Flink CDC 型を Hologres の BIGINT または TEXT のいずれかに変換します。

sink.insert.legacy-put-handler

Hologres へのデータ書き込みにレガシ Put ハンドラを使用するかどうかを指定します。

Boolean

いいえ

false

有効値:

  • false (デフォルト):新しい Put ハンドラを使用してデータを書き込みます。書き込み操作の SQL 形式は insert into xxx(c0,c1,...) select unnest(?),unnest(?),... on conflict です。

  • true:レガシ Put ハンドラを使用してデータを書き込みます。書き込みの SQL 形式は insert into xxx(c0,c1,...) values (?,?,...),... on conflict;  です。

table_property.*

Hologres の物理テーブルプロパティです。

String

いいえ

なし

Hologres テーブルを作成する際に、WITH 句で物理テーブルプロパティを設定できます。適切なテーブルプロパティを設定することで、システムがデータを効率的に整理およびクエリできるようになります。

警告

table_property.distribution_key パラメーターはデフォルトでプライマリキー値になります。影響を十分に理解していない限り、この設定を変更しないでください。設定を変更すると、データ書き込みの正確性に影響を与える可能性があります。

connection.ssl.mode

Secure Sockets Layer (SSL) トランスポート暗号化を有効にするかどうか、およびどのモードを使用するかを指定します。

String

いいえ

disable

  • disable (デフォルト):トランスポート暗号化を無効にします。

  • require:SSL を有効にしてデータリンクを暗号化します。

  • verify-ca:SSL を有効にしてデータリンクを暗号化し、CA 証明書を使用して Hologres サーバーの真正性を検証します。

  • verify-full:SSL を有効にしてデータリンクを暗号化し、CA 証明書を使用して Hologres サーバーの真正性を検証し、証明書内の CN または DNS 名が設定された Hologres エンドポイントと一致するかどうかを検証します。

説明
  • Hologres V2.1 以降では、verify-ca モードおよび verify-full モードがサポートされています。詳細については、「トランスポート暗号化」をご参照ください。

  • このパラメーターを verify-ca または verify-full に設定する場合は、connection.ssl.root-cert.location パラメーターも設定する必要があります。

connection.ssl.root-cert.location

トランスポート暗号化モードで証明書が必要な場合、証明書ファイルへのパスを指定します。

String

いいえ

なし

connection.ssl.mode が verify-ca または verify-full に設定されている場合、CA 証明書へのパスも設定する必要があります。Realtime Compute コンソールの File Management 機能を使用して、プラットフォームに証明書をアップロードできます。証明書をアップロードすると、/flink/usrlib ディレクトリに保存されます。たとえば、CA 証明書ファイルの名前が certificate.crt の場合、パラメーター値は '/flink/usrlib/certificate.crt' である必要があります。

説明

CA 証明書の取得方法については、「トランスポート暗号化 - CA 証明書のダウンロード」をご参照ください。

connection.akv4.enabled

AKV4 モードを有効にして Hologres サーバーに接続するかどうかを指定します。

Boolean

いいえ

false

該当なし。

connection.akv4.region

AKV4 モードが有効な場合、サーバーが配置されているリージョンを指定します。

String

いいえ

なし

例:cn-shanghai

既存のカタログの再利用

VVR 11.5 以降では、Flink CDC データインジェストジョブで Data Management ページに作成済みの組み込み Hologres カタログを直接参照できます。これにより、接続プロパティを手動で指定する必要が軽減されます。

sink:
  type: hologres
  using.built-in-catalog: my_holo_catalog

データインジェストジョブでは、次の Hologres カタログパラメーターを自動的に再利用できます:

  • endpoint

  • username

  • password

  • dbname

これらの自動再利用パラメーターを上書きするには、対応する YAML パラメーターを明示的に指定できます。YAML パラメーターの方が優先度が高くなります。

データ型マッピング

sink.type-normalize-strategy パラメーターを使用して、アップストリームデータを Hologres 型に変換する戦略を設定できます。

説明
  • YAML ジョブを初めて開始する際に sink.type-normalize-strategy を有効にしてください。ジョブ開始後に有効にした場合、設定を有効にするにはダウンストリームテーブルを削除し、ステートレスでジョブを再起動する必要があります。

  • 現在、配列型は INTEGER、BIGINT、FLOAT、DOUBLE、BOOLEAN、CHAR、VARCHAR のみをサポートしています。

  • Hologres はプライマリキーとして numeric 型をサポートしていません。プライマリキーの型が numeric にマッピングされる場合、システムはそれを varchar 型に変換します。

STANDARD

sink.type-normalize-strategy が STANDARD に設定されている場合、型は次のようにマッピングされます:

Flink CDC 型

Hologres 型

CHAR

bpchar

STRING

text

VARCHAR

text (長さ > 10485760 の場合)

varchar (長さ <= 10485760 の場合)

BOOLEAN

bool

BINARY

bytea

VARBINARY

DECIMAL

numeric

TINYINT

int2

SMALLINT

INTEGER

int4

BIGINT

int8

FLOAT

float4

DOUBLE

float8

DATE

date

TIME_WITHOUT_TIME_ZONE

time

TIMESTAMP_WITHOUT_TIME_ZONE

timestamp

TIMESTAMP_WITH_LOCAL_TIME_ZONE

timestamptz

ARRAY

対応する要素型の配列

MAP

サポートされていません

ROW

サポートされていません

BROADEN

sink.type-normalize-strategy が BROADEN に設定されている場合、Flink CDC 型はより広い範囲の Hologres 型に変換されます。型は次のようにマッピングされます:

Flink CDC 型

Hologres 型

CHAR

text

STRING

VARCHAR

BOOLEAN

bool

BINARY

bytea

VARBINARY

DECIMAL

numeric

TINYINT

int8

SMALLINT

INTEGER

BIGINT

FLOAT

float8

DOUBLE

DATE

date

TIME_WITHOUT_TIME_ZONE

time

TIMESTAMP_WITHOUT_TIME_ZONE

timestamp

TIMESTAMP_WITH_LOCAL_TIME_ZONE

timestamptz

ARRAY

対応する要素型の配列

MAP

サポートされていません

ROW

サポートされていません

ONLY_BIGINT_OR_TEXT

sink.type-normalize-strategy が ONLY_BIGINT_OR_TEXT に設定されている場合、すべての Flink CDC 型は Hologres の BIGINT 型または STRING 型に変換されます。データ型マッピングは次のとおりです:

Flink CDC 型

Hologres 型

TINYINT

int8

SMALLINT

INTEGER

BIGINT

BOOLEAN

text

BINARY

VARBINARY

DECIMAL

FLOAT

DOUBLE

DATE

TIME_WITHOUT_TIME_ZONE

TIMESTAMP_WITHOUT_TIME_ZONE

TIMESTAMP_WITH_LOCAL_TIME_ZONE

ARRAY

対応する要素型の配列

MAP

サポートされていません

ROW

サポートされていません

パーティションテーブルへの書き込み

変換機能と Hologres sink を使用して、アップストリームデータを Hologres パーティションテーブルに書き込むことができます。

  • パーティションキープライマリキー の一部である必要があります。アップストリームデータのプライマリキー以外の列を パーティションキー として使用すると、アップストリームテーブルとダウンストリームテーブルのプライマリキーが不整合になり、データ同期中にデータの不一致が発生する可能性があります。

  • Hologres は、TEXTVARCHAR、および INT データ型の列を パーティションキー としてサポートしています。バージョン 1.3.22 以降では、DATE データ型の列もサポートされています。

  • 子パーティションテーブルを自動的に作成するには、createparttable パラメーターを true に設定します。設定しない場合は、手動で作成する必要があります。

例については、「パーティションテーブルへのデータ書き込み」をご参照ください。

テーブルスキーマの同期

CDC YAML パイプラインでは、パイプラインレベルの schema.change.behavior パラメーターを使用して、テーブルスキーマ変更を処理するさまざまな戦略を構成できます。schema.change.behavior の有効値は IGNORE、LENIENT、TRY_EVOLVE、EVOLVE、EXCEPTION です。Hologres Sink は現在、TRY_EVOLVE 戦略をサポートしていません。LENIENT および EVOLVE 戦略ではテーブルスキーマ変更が関係します。以下のセクションでは、これら 2 つのモードが異なるスキーマ変更イベントをどのように処理するかについて説明します。

LENIENT (デフォルト)

LENIENT モードでは、スキーマ変更は次のように処理されます:

  • NULL 許容列の追加:対応する列が結果テーブルの末尾に自動的に追加され、そのデータが同期されます。

  • NULL 許容列の削除:結果テーブルから列は削除されません。代わりに、その列には自動的に NULL 値が入力されます。

  • NOT NULL 列の追加:対応する NULL 許容列が結果テーブルの末尾に自動的に追加され、そのデータが同期されます。既存の行については、この新しい列に自動的に NULL が入力されます。

  • 列名の変更:この操作は列の削除と新しい列の追加として扱われます。指定された名前の新しい列が結果テーブルの末尾に追加され、元の名前の列には自動的に NULL 値が入力されます。たとえば、col_a が col_b に名前変更された場合、col_b 列が結果テーブルの末尾に追加され、col_a 列には自動的に NULL 値が入力されます。

  • 列のデータ型の変更:サポートされていません。Hologres は列のデータ型の変更をサポートしていないため、sink.type-normalize-strategy パラメーターを使用する必要があります。

  • 次のスキーマ変更はサポートされていません:

    • プライマリキーやインデックスなどの制約の変更。

    • NOT NULL 列の削除。

    • 列の NOT NULL から NULL 許容への変更。

EVOLVE

EVOLVE モードでは、スキーマ変更は次のように処理されます:

  • NULL 許容列の追加:サポートされています。

  • NULL 許容列の削除:サポートされていません。

  • NOT NULL 列を追加します。結果テーブルに新しい NULL 許容の列が追加されます。

  • 列名の変更:サポートされています。結果テーブルで元の列名が変更されます。

  • 列のデータ型の変更:サポートされていません。Hologres は列のデータ型の変更をサポートしていないため、sink.type-normalize-strategy パラメーターを使用する必要があります。

  • 次のスキーマ変更はサポートされていません:

    • プライマリキーやインデックスなどの制約の変更。

    • NOT NULL 列の削除。

    • 列の NOT NULL から NULL 許容への変更。

警告

EVOLVE モードでは、結果テーブルを削除せずにステートレスで再起動を行うと、アップストリームデータと結果テーブルのスキーマ間に不整合が生じてパイプラインが失敗する可能性があります。その場合は、手動で結果テーブルのスキーマを調整する必要があります。

例については、「EVOLVE モードの有効化」をご参照ください。

コード例

型の拡張

sink.type-normalize-strategy パラメーターを使用して、型の拡張を構成します。

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.test_source_table
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # CDC データ型をより広い範囲の Hologres 型にマッピングします。
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

パーティションテーブルへの書き込み

create_time タイムスタンプフィールドを日付型に変換し、Hologres テーブルのパーティションキーとして使用します。

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.test_source_table
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # 存在しないパーティションテーブルを自動的に作成します。
  createparttable: true
 
transform:
  - source-table: test_db.test_source_table
    projection: \*, DATE_FORMAT(CAST(create_time AS TIMESTAMP), 'yyyy-MM-dd') as partition_key
    primary-keys: id, create_time, partition_key
    partition-keys: partition_key
    description: add partition key 

pipeline:
  name: MySQL to Hologres Pipeline

EVOLVE モードの有効化

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.test_source_table
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # 存在しないパーティションテーブルを自動的に作成します。
  createparttable: true

pipeline:
  name: MySQL to Hologres Pipeline
  schema.change.behavior: evolve

単一テーブルの同期

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.test_source_table
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # CDC データ型をより広い範囲の Hologres 型にマッピングします。
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

フルデータベースの同期

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.\.*
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # CDC データ型をより広い範囲の Hologres 型にマッピングします。
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

シャード化されたテーブルのマージ

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.user\.*
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # CDC データ型をより広い範囲の Hologres 型にマッピングします。  
  sink.type-normalize-strategy: BROADEN
  
route:
  # MySQL test_db データベース内のすべてのシャード化されたテーブルが、test_db.user という名前の単一の Hologres テーブルにマージされます。
  - source-table: test_db.user\.*
    sink-table: test_db.user

pipeline:
  name: MySQL to Hologres Pipeline

指定されたスキーマへの同期

Hologres では、スキーマは MySQL のデータベースに対応します。結果テーブルのスキーマを指定できます。

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.user\.*
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # CDC データ型をより広い範囲の Hologres 型にマッピングします。
  sink.type-normalize-strategy: BROADEN
  
route:
  # MySQL test_db データベースのすべてのテーブルを Hologres test_db2 スキーマに同期し、元のテーブル名を維持します。
  - source-table: test_db.\.*
    sink-table: test_db2.<>
    replace-symbol: <>

pipeline:
  name: MySQL to Hologres Pipeline

再起動せずに新規テーブルを同期

ジョブ実行中に新しく追加されたテーブルをリアルタイムで同期するには、scan.binlog.newly-added-table.enable = true を設定します。

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.\.*
  server-id: 5401-5499
  # ジョブ実行中に新しく作成されたテーブルを自動的にキャプチャします。  
  scan.binlog.newly-added-table.enabled: true

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # CDC データ型をより広い範囲の Hologres 型にマッピングします。
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

再起動時に既存のテーブルを追加

同期に既存のテーブルを含めるには、scan.newly-added-table.enabledtrue に設定してジョブを再起動します。

警告

以前に scan.binlog.newly-added-table.enabled を使用して実行されたジョブで scan.newly-added-table.enabled を使用しないでください。この組み合わせにより、再起動時にデータが重複する可能性があります。

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.\.*
  server-id: 5401-5499
  scan.startup.mode: initial
  # 再起動時に、`tables` パラメーターに一致する新しいテーブルをスキャンしてスナップショットを実行します。
  # 注:このパラメーターは scan.startup.mode: initial と共に使用する必要があります。
  scan.newly-added-table.enabled: true

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # CDC データ型をより広い範囲の Hologres 型にマッピングします。
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

テーブルの除外

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.\.*
  # この正規表現に一致するテーブルを除外します。
  tables.exclude: test_db.table1
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # CDC データ型をより広い範囲の Hologres 型にマッピングします。
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

関連ドキュメント