📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

MySQL にシンク(ベータ版)



このドキュメントでは、Sink to MySQL変更フィードを使用してTiDB Cloud Essential から MySQL にデータをストリーミングする方法について説明します。

制限

  • TiDB Cloud Essential クラスターごとに、最大 10 個の変更フィードを作成できます。
  • TiDB Cloud Essential は、変更フィードを確立するために TiCDC を使用するため、同じTiCDCとしての制限持ちます。
  • レプリケートするテーブルに主キーまたは NULL 以外の一意のインデックスがない場合、レプリケーション中に一意の制約がないと、再試行シナリオによっては下流に重複したデータが挿入される可能性があります。

前提条件

変更フィードを作成する前に、次の前提条件を完了する必要があります。

  • ネットワーク接続を設定する
  • 既存のデータをMySQLにエクスポートしてロードする(オプション)
  • 既存のデータをロードせず、増分データのみをMySQLに複製する場合は、MySQLに対応するターゲットテーブルを作成します。

ネットワーク

TiDB Cloud Essential クラスターが MySQL サービスに接続できることを確認してください。以下のいずれかの接続方法を選択できます。

  • プライベート リンク接続: セキュリティ コンプライアンスを満たし、ネットワーク品質を確保します。
  • パブリック ネットワーク: 素早いセットアップに適しています。

    プライベート リンク接続は、クラウド プロバイダーのプライベート リンクテクノロジーを活用し、VPC 内のリソースが、あたかもそれらのサービスが VPC 内で直接ホストされているかのように、プライベート IP アドレスを介して他の VPC 内のサービスに接続できるようにします。

    TiDB Cloud Essential クラスターを MySQL サービスにプライベートリンク接続で安全に接続できます。MySQL サービスでプライベートリンク接続が利用できない場合は、手順プライベートリンク接続経由で Amazon RDS に接続するまたはプライベートリンク接続を介して Alibaba Cloud ApsaraDB RDS for MySQL に接続するに従って作成してください。

    MySQL サービスにパブリック ネットワーク経由でアクセスできる場合は、パブリック IP またはドメイン名を介して MySQL に接続することを選択できます。

    既存のデータを読み込む(オプション)

    Sink to MySQLコネクタは、特定のタイムスタンプ以降の増分データのみをTiDB Cloud EssentialクラスタからMySQLにシンクできます。TiDB TiDB Cloud Essentialクラスタに既にデータがある場合は、 Sink to MySQLを有効にする前に、 TiDB Cloud Essentialクラスタの既存データをエクスポートしてMySQLにロードできます。

    既存のデータをロードするには:

    1. この期間中の履歴データが TiDB によってガベージ コレクションされないように、 tidb_gc_life_time次の 2 つの操作の合計時間よりも長く延長します。

      • 既存のデータをエクスポートおよびインポートする時間
      • Sink to MySQLを作成する時間

      例えば:

      SET GLOBAL tidb_gc_life_time = '72h';
    2. 輸出機能を使用してTiDB Cloud Essential クラスターからデータをエクスポートし、 マイダンパー/マイローダーなどのコミュニティ ツールを使用してデータを MySQL サービスにロードします。

    3. 輸出によって返されるスナップショットの時刻を記録します。このタイムスタンプを、MySQLシンクを設定する際の開始位置として使用します。

    MySQLでターゲットテーブルを作成する

    既存データをロードしない場合は、TiDBからの増分データを保存するために、MySQLに対応するターゲットテーブルを手動で作成する必要があります。そうしないと、データは複製されません。

    MySQLシンクを作成する

    前提条件を完了したら、データを MySQL にシンクできます。

    1. 対象のTiDB Cloud Essential クラスターの概要ページに移動し、左側のナビゲーション ペインで[データ] > [Changefeed]をクリックします。

    2. 「Changefeed の作成」をクリックし、宛先としてMySQLを選択します。

    3. 「接続方法」で、MySQL サービスに接続する方法を選択します。

      • 「パブリック」を選択した場合は、MySQL エンドポイントを入力します。
      • [プライベート リンク]を選択した場合は、セクションネットワークで作成したプライベート リンク接続を選択し、MySQL サービスの MySQL ポートを入力します。
    4. 「認証」でMySQLのユーザー名とパスワードを入力し、MySQLサービスのTLS暗号化を設定します。現在、 TiDB CloudはMySQL TLS接続用の自己署名証明書をサポートしていません。

    5. 「次へ」をクリックして、TiDB が MySQL に正常に接続できるかどうかをテストします。

      • はいの場合は、構成の次の手順に進みます。
      • そうでない場合は接続エラーが表示されるので、エラーに対処する必要があります。エラーが解決したら、もう一度「次へ」をクリックしてください。
    6. テーブルフィルターをカスタマイズして、複製するテーブルをフィルタリングします。ルールの構文については、 テーブルフィルタルールを参照してください。

      • レプリケーション スコープ: 有効なキーを持つテーブルのみをレプリケートするか、選択したすべてのテーブルをレプリケートするかを選択できます。
      • フィルタールール: この列でフィルタールールを設定できます。デフォルトでは、すべてのテーブルを複製するルール*.*が設定されています。新しいルールを追加して「適用」をクリックすると、 TiDB CloudはTiDB内のすべてのテーブルをクエリし、ルールに一致するテーブルのみを「フィルター結果」の下に表示されます。
      • 大文字と小文字を区別: フィルタールール内のデータベース名とテーブル名のマッチングで大文字と小文字を区別するかどうかを設定できます。デフォルトでは、大文字と小文字は区別されません。
      • 有効なキーで結果をフィルタリング: この列には、主キーや一意のインデックスなど、有効なキーを持つテーブルが表示されます。
      • 有効なキーのないフィルター結果: この列には、主キーまたは一意キーを持たないテーブルが表示されます。これらのテーブルは、一意の識別子がないと、下流で重複イベントを処理する際にデータの不整合が発生する可能性があるため、レプリケーション中に問題が発生します。データの整合性を確保するには、レプリケーションを開始する前に、これらのテーブルに一意のキーまたは主キーを追加することをお勧めします。または、これらのテーブルを除外するフィルタールールを追加することもできます。例えば、ルール"!test.tbl1"を使用してテーブルtest.tbl1を除外できます。
    7. イベント フィルターをカスタマイズして、複製するイベントをフィルターします。

      • 一致するテーブル: この列では、イベントフィルターを適用するテーブルを設定できます。ルールの構文は、前述の「テーブルフィルター」領域で使用されているものと同じです。
      • イベント フィルター: 無視するイベントを選択できます。
    8. 「レプリケーションの開始位置」で、MySQL シンクの開始位置を設定します。

      • エクスポートを使用しているスナップショットが既存のデータをロードしましたある場合は、 「開始時刻」を選択し、エクスポートによって返されたスナップショットの時刻を入力してください。タイムゾーンが正しいことを確認してください。
      • アップストリーム TiDB クラスターにデータがない場合は、 「今すぐレプリケーションを開始する」を選択します。
    9. 「次へ」をクリックして、変更フィードを設定します。

      「Changefeed 名」領域で、Changefeed の名前を指定します。

    10. 設定を確認してください。すべての設定が正しければ、 「送信」をクリックしてください。

      設定を変更する場合は、 「前へ」をクリックして前の設定ページに戻ります。

    11. 作成後、シンクのステータスは「作成中」から「実行中」に変わります。

      変更フィード名をクリックすると、チェックポイント、レプリケーションのレイテンシー、その他のメトリックなど、変更フィードに関する詳細が表示されます。

    12. 既存のデータをロードしましたに設定されていて、GC 時間を増やした場合は、シンクの作成後に元の値 (デフォルト値は10m ) に戻します。

      SET GLOBAL tidb_gc_life_time = '10m';

    このページは役に立ちましたか?