Flink Change Data Capture (CDC) は、リアルタイムデータ同期とテーブルスキーマ進化の自動同期をサポートしています。データ同期テンプレートを使用して、これらの同期タスク用の Flink SQL ジョブコードを迅速に生成できます。このトピックでは、複数データベースおよび複数テーブルの同期テンプレートまたはシャーディングされたデータのマージテンプレートを使用してデータを同期する方法について説明します。
背景情報
Realtime Compute for Apache Flink は、複数データベースおよび複数テーブルの同期とシャーディングされたデータのマージという 2 つのデータ同期メソッドをサポートしています。次の表に、2 つのメソッドの違いを示します。
同期メソッド | 説明 |
複数データベースおよび複数テーブルの同期 | 複数データベースおよび複数テーブルの同期テンプレートを使用して、1 つ以上のデータベースから 1 つ以上のビジネスデータテーブルを別のデータベースにリアルタイムでコピーします。Flink CDC は、データベース全体の完全データと増分データを自動的に同期します。また、追加された列など、各ソーステーブルのスキーマ進化を、対応するターゲットテーブルにリアルタイムで同期します。複数データベースおよび複数テーブルの同期テンプレートは、パラメーターを CREATE DATABASE AS (CDAS) 文に変換します。CDAS 文の詳細については、「CREATE DATABASE AS (CDAS) 文」をご参照ください。 |
シャーディングされたデータのマージ | ビジネスデータが異なるデータベースやテーブルに分散している場合、シャーディングされたデータをマージする必要があることがよくあります。これにより、同様のスキーマを持つテーブルから単一のターゲットテーブルにデータを同期できます。Flink CDC は、ソースからすべてのシャーディングされたテーブルの完全データと増分データを自動的に同期します。これには、正規表現に一致する新しいテーブルも含まれます。また、追加された列など、各ソーステーブルのスキーマ進化を、ターゲットテーブルにリアルタイムで同期します。シャーディングされたデータのマージテンプレートは、パラメーターを CREATE TABLE AS (CTAS) 文に変換します。CTAS 文の詳細については、「CREATE TABLE AS (CTAS) 文」をご参照ください。 |
制限事項
データ同期は、MySQL から Hologres へのみサポートされています。
注意事項
MySQL から Hologres にデータを同期すると、スキーマ進化も同期されます。詳細については、「CREATE TABLE AS (CTAS) 文」をご参照ください。同期中は、次の点にご注意ください。
Flink が自動的にテーブルを作成するため、Hologres で手動でテーブルを作成する必要はありません。ただし、対応するテーブルが Hologres にすでに存在する場合、Flink はプランで選択したターゲットデータベースとテーブル情報をマッピングに使用します。
Flink は Hologres にテーブルを自動的に作成します。ただし、対応するテーブルが Hologres にすでに存在する場合、Flink はプランで指定されたターゲットデータベースとテーブルにマッピングします。
Hologres は列の型の変更をサポートしていません。フィールドの型がターゲットの Hologres テーブルの対応するフィールドの型と異なる場合、書き込み操作は失敗します。その場合は、列の型を変更してデータを再同期する必要があります。
フィールドの型がターゲットの Hologres テーブルの対応するフィールドの型と異なる場合、書き込み操作は失敗します。フィールドの型を変更してデータを再同期する必要があります。
Hologres 結果テーブルの詳細については、「Hologres 結果テーブル」をご参照ください。
手順
ターゲットワークスペースの [アクション] 列で、[コンソール] をクリックします。
ページで、
アイコンをクリックし、次に [テンプレートから作成] をクリックします。[データ同期テンプレート] タブで、[MySQL から Hologres へのデータ同期] をダブルクリックします。または、テンプレートを選択して右下隅にある [次へ] をクリックします。
データ同期情報を構成します。
ソースとターゲットを選択し、[次へ] をクリックします。

カテゴリ
構成項目
説明
ソース
MySQL カタログ
既存の MySQL カタログを選択します。ソースの MySQL カタログを作成していない場合は、[カタログの作成] をクリックします。カタログの作成方法の詳細については、「MySQL カタログの管理」をご参照ください。
MySQL server-id
各 MySQL データベースクライアントの一意の ID。値は 5400 から 6400 の範囲内である必要があります。5400-5408 のような ID 範囲を指定することもできます。増分読み取りモードで同時読み取りを有効にする場合は、このパラメーターを ID 範囲に設定することをお勧めします。これにより、各同時スレッドが異なる ID を使用することが保証されます。
重要データベースにアクセスする他のジョブやサービスに同じサーバー ID を使用しないでください。
ターゲット
Hologres カタログ
既存のターゲット Hologres カタログを選択します。ターゲットの Hologres カタログを作成していない場合は、[カタログの作成] をクリックします。詳細については、「Hologres カタログの管理」をご参照ください。
プランを作成します。
複数データベースおよび複数テーブルの同期
[複数データベースおよび複数テーブルの同期] タブで、ソースデータベースとテーブルを選択します。

[プランの保存] をクリックしてプランリストを表示します。
説明複数データベースおよび複数テーブルのデータ同期を実行すると、このテンプレートはターゲットカタログにデータベースとテーブルを作成します。作成されたデータベースとテーブルの名前は、ソースカタログのものと同じです。デフォルトでは、データは public スキーマに同期されます。データベース名、テーブル名を変更したり、スキーマを指定したりするには、SQL 文を変更することをお勧めします。名前の変更方法の詳細については、「CREATE TABLE AS (CTAS) 文」および「CREATE DATABASE AS (CDAS) 文」をご参照ください。スキーマの指定方法の詳細については、「CDAS のターゲットカタログとして使用する」をご参照ください。スキーマを指定すると、カタログ内のテーブル名に必要なフォーマットも変更されます。詳細については、「Hologres カタログの管理」をご参照ください。
[次へ] をクリックします。
選択したターゲットデータベースとテーブルに基づいてシステムが生成する SQL コードを表示します。

必要に応じて、[ファイル名]、[場所]、[エンジンバージョン] などの情報を変更できます。
シャーディングされたデータのマージ
[シャーディングされたデータのマージ] タブで、ソースデータベースとテーブルを選択し、ターゲットデータベースとテーブルの名前を入力します。
説明ソースデータベースとテーブルを指定するには、正規表現を使用することをお勧めします。
[プランの保存] をクリックしてプランリストを表示します。

単一のジョブで、複数データベースおよび複数テーブルの同期とシャーディングされたデータのマージの両方に対して複数のプランを作成できます。次の図に例を示します。

[次へ] をクリックします。
選択したターゲットデータベースとテーブルに基づいてシステムが生成する SQL コードを表示します。

必要に応じて、[ファイル名]、[場所]、[エンジンバージョン] などの情報を変更できます。
[作成] をクリックします。