次の方法で共有


MySQL データベース CDC ソースをイベントストリームに追加する

この記事には、Microsoft が使用しなくなった SLAVE という用語が使われています。 ソフトウェアからこの用語が削除された時点で、この記事から削除します。

この記事では、MySQL Change Data Capture ソースをイベントストリームに追加する方法について説明します。 現在、MySQL Database CDC は、データベースにパブリックにアクセスできる次のサービスからサポートされています。

  • Azure Database for MySQL
  • Amazon RDS for MySQL
  • Amazon Aurora MySQL
  • Google Cloud SQL for MySQL (GCP)

このガイドでは、Azure Database for MySQL CDC を例として使用します。

MySQL データベース CDC ソースがイベントストリームに追加されると、指定したテーブルに対する行レベルの変更がキャプチャされます。 その後、これらの変更をリアルタイムで処理し、別の宛先に送信して詳細な分析を行うことができます。

このソースは、ワークスペース容量の次のリージョンではサポートされていません: 米国西部 3スイス西部

前提条件

  • 共同作成者以上のアクセス許可を使用した Fabric 容量ライセンス モード (または試用版ライセンス モード) でのワークスペースへのアクセス。
  • MySQL データベースのインスタンス (Azure Database for MySQL - フレキシブル サーバー内のデータベースなど) へのアクセス。
  • これは、パブリックにアクセス可能である必要があります。ファイアウォールの内側にあっても、仮想ネットワークで保護されてもなりません。
  • イベントストリームがない場合は、イベントストリームを作成します。

MySQL を設定します。

コネクタは Debezium MySQL コネクタを使用して、MySQL データベースの変更をキャプチャします。 Messaging Connector が変更をキャプチャできるすべてのデータベースに対して適切な権限を持つ MySQL ユーザーを定義する必要があります。 管理者ユーザー を直接使用して、通常は適切な特権を持つデータベースに接続することも、次の手順に従って新しいユーザーを作成することもできます。

新しいユーザーまたは管理者アカウントと対応するパスワードは、後で Eventstream 内のデータベースに接続するために使用されます。

  1. コマンド プロンプトで mysql 、MySQL ユーザーを作成します。

    mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'password';
    
  2. 必要な権限をユーザーに付与します。

    mysql> GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user'@'%';
    

    Amazon RDS や Aurora などのホストされているオプションと同様に、グローバル読み取りロックが使用できない場合は、テーブルレベルのロックを使用して一貫性のあるスナップショットが作成されます。 この場合は、ユーザーに LOCK TABLES アクセス許可を付与する必要があります。 さらに、スナップショット中の FLUSH 操作をサポートするには、RELOAD または FLUSH_TABLES 権限の付与も必要になる場合があります。

  3. ユーザーのアクセス許可を最終処理します。

    mysql> FLUSH PRIVILEGES;
    

ユーザーまたは管理者に必要な特権が付与されているかどうかを確認するには、次のコマンドを実行し、手順 2 で必要な特権を表示する必要があります。

SHOW GRANTS FOR user;

必要なアクセス許可をユーザーに付与する方法の詳細については、「MySQL 用 Debezium コネクタ: Debezium ドキュメント」を参照してください。

binlog を有効にする

MySQL レプリケーションのバイナリ ログを有効にする必要があります。 バイナリ ログには、変更を反映するためのレプリケーション ツールのトランザクションの更新が記録されます。 このセクションでは、構成手順 示す例として、Azure Database for MySQL CDC を使用します。

  1. Azure portal の Azure Database for PostgreSQL サーバーのページで、[設定] の下の [サーバー パラメーター] を選択します。

  2. プロジェクト パラメーター ページで、次の設定を完了し、保存を選択します。

    • binlog_row_imageの場合は、[完全] を選択します

    • binlog_expire_logs_secondsの場合は、バイナリ ログ ファイルが消去されるまでにサービスが待機する秒数を設定します。 (必要な場合) の値を、環境内のプレフィックスと一致するように変更します (例:86400 )。

    サーバー パラメーターの下のレプリケーションの binlog 設定のスクリーンショット。

MySQL DB (CDC) をソースとして追加する

イベントストリームにまだソースを追加していない場合は、[外部ソースの使用] タイルを選択します。

[外部ソースの使用] タイルの選択を示すスクリーンショット。

既に公開されているイベントストリームにソースを追加する場合は、編集モードに切り替え、リボンの [ソースの追加] を選択してから、[外部ソース] を選択します。

[ソースの追加] の [外部ソース] メニューの選択を示すスクリーンショット。

[データ ソースの選択] ページにおいて、[MySQL DB (CDC)] タイルで [接続] を探して選択します。

イベントの取得ウィザードでのソースの種類としての MySQL DB (CDC) の選択を示すスクリーンショット。

MySQL DB (CDC) の構成と接続

  1. [接続] 画面の [接続] で、[新しい接続] を選択してクラウド接続を作成します。

    [接続] ページを示すスクリーンショット。

  2. MySQL DB の次の 接続設定接続資格情報 を入力し、それから 接続を選択します。

    • サーバー: MySQL データベースのサーバー アドレス (例: my-mysql-server.mysql.database.azure.com)。

    • データベース: データベース名 (my_database など)。

    • 接続名: 自動生成されるか、この接続の新しい名前を入力できます。

    • UsernamePassword: MySQL データベースの資格情報を入力します。 サーバー管理者アカウントまたは必要な権限を付与して作成されたユーザー アカウントを入力してください。

      Azure MySQL DB (CDC) の接続設定のスクリーンショット。

  3. MySQL DB CDC データ ソースを構成するには、次の情報を入力し、[次へ]選択します。

    • ポート: 既定値は 3306 です。 選択したクラウド接続が [接続とゲートウェイの管理] で構成されている場合は、ポート番号がそこに設定されているポート番号と一致していることを確認します。 一致しない場合は、[ 接続とゲートウェイの管理 ] のクラウド接続のポート番号が優先されます。

    • テーブル: [すべてのテーブル ] または [テーブル名を入力] を選択します。 後者を選択する場合は、完全なテーブル識別子 (databaseName.tableName) のコンマ区切りの一覧を使用してテーブルを指定します。

      完全なテーブル識別子を直接使用する場合は、各テーブル名 (スキーマ名を含む) を 128 文字に制限して、最大 100 個のテーブルを入力できます。

    • サーバー ID: MySQL クラスター内のサーバーとレプリケーション クライアントごとに一意の値を入力します。 既定値は 1000 です。

    リーダーごとに異なるサーバー ID を設定します。 binlog を読み取るすべての MySQL データベース クライアントには、サーバー ID と呼ばれる一意の ID が必要です。 MySQL サーバーはこの ID を使用して、ネットワーク接続と binlog の位置をメインします。 同じサーバー ID を共有するジョブが異なると、間違った binlog 位置から読み取る可能性があります。 そのため、リーダーごとに異なるサーバー ID を設定することをお勧めします。

  4. [詳細設定] を展開して、MySQL データベース CDC ソースの追加の構成オプションにアクセスできます。

    • スナップショット ロック モード: オプションは次のとおりです。
      • 最小 (既定値): スキーマとメタデータをキャプチャするために、初期フェーズ中にのみグローバル読み取りロックを保持します。 スナップショットの残りの部分では REPEATABLE READ トランザクションが使用され、データの読み取り中に更新が許可されます。
      • 拡張: スナップショット期間全体のグローバル読み取りロックを維持し、すべての書き込みをブロックします。 書き込みブロックが許容される場合は、完全な一貫性を確保するために使用します。
      • なし: スナップショット中のテーブル ロックの取得をスキップします。 プロセス中にスキーマの変更が発生しない場合にのみ安全です。
    • 10 進処理モード: コネクタが DECIMALNUMERIC 列の値を処理する方法を指定します。
      • Precise: 正確な 10 進型 (Java BigDecimal など) を使用して値を表し、データ表現の完全な精度と精度を確保します。
      • Double: 値を倍精度浮動小数点数に変換します。 これにより、使いやすさとパフォーマンスが向上しますが、精度が失われる可能性があります。
      • String: 値を書式設定された文字列としてエンコードします。 これにより、ダウンストリーム システムで簡単に使用できますが、元の数値型に関するセマンティック情報は失われます。

    ソース名を編集するには、右側の [ストリームの詳細] セクションで、[ソース名]鉛筆ボタンを選択します。

    Azure MySQL DB (CDC) 接続の [テーブル]、[サーバー ID]、[ポート] の選択のスクリーンショット。

  5. 確認と接続 ページで、MySQL DB CDC ソースの概要を確認した後、[ の追加] を選択して構成を完了します。

    [追加] ボタンが選択された [確認と接続] ページのスクリーンショット。

更新されたイベントストリームを表示する

  1. MySQL DB (CDC) ソースが、編集モードのでイベントストリームに追加されていることがわかります。

    [発行] ボタンが強調表示されている編集モードで追加された Azure MySQL DB CDC ソースのスクリーンショット。

  2. [発行] を選択して変更を発行し、イベントストリームへの MySQL DB CDC データのストリーミングを開始します。

    追加された Azure MySQL DB CDC ソースのライブ モードのスクリーンショット。

その他のコネクタ。