MySQLに沈む

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

注記:

  • changefeed 機能を使用するには、 TiDB Cloud Dedicated クラスターのバージョンが v6.1.3 以降であることを確認してください。
  • TiDB Cloudサーバーレス クラスター場合、changefeed 機能は使用できません。

制限

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

前提条件

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

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

ネットワーク

TiDB クラスタ がMySQL サービスに接続できることを確認します。

MySQL サービスがパブリックインターネットアクセスのない AWS VPC 内にある場合は、次の手順を実行します。

  1. MySQL サービスの VPC と TiDB クラスター間の接続はVPCピアリング接続を設定する

  2. MySQL サービスが関連付けられているセキュリティ グループの受信ルールを変更します。

    受信ルールにTiDB Cloudクラスターが配置されているリージョンの CIDR追加する必要があります。これにより、トラフィックが TiDBクラスタから MySQL インスタンスに流れるようになります。

  3. MySQL URL にホスト名が含まれている場合は、 TiDB Cloud がMySQL サービスの DNS ホスト名を解決できるようにする必要があります。

    1. VPC ピアリング接続の DNS 解決を有効にするの手順に従います。
    2. Accepter DNS 解決オプションを有効にします。

MySQL サービスがパブリック インターネット アクセスのない Google Cloud VPC 内にある場合は、次の手順に従います。

  1. MySQL サービスが Google Cloud SQL である場合は、Google Cloud SQL インスタンスに関連付けられた VPC で MySQL エンドポイントを公開する必要があります。Google によって開発されたCloud SQL 認証プロキシを使用する必要がある場合があります。

  2. MySQL サービスの VPC と TiDB クラスター間の接続はVPCピアリング接続を設定する

  3. MySQL が配置されている VPC の Ingress ファイアウォール ルールを変更します。

    入力ファイアウォール ルールにTiDB Cloudクラスターが配置されているリージョンの CIDR追加する必要があります。これにより、トラフィックが TiDBクラスタから MySQL エンドポイントに流れるようになります。

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

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

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

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

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

    例えば:

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

  3. Dumplingのエクスポートファイルから、メタデータ ファイルから MySQL シンクの開始位置を取得します。

    以下はメタデータ ファイルの例の一部ですSHOW MASTER STATUSのうちPos既存データの TSO であり、MySQL シンクの開始位置でもあります。

    Started dump at: 2020-11-10 10:40:19 SHOW MASTER STATUS: Log: tidb-binlog Pos: 420747102018863124 Finished dump at: 2020-11-10 10:40:20

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

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

MySQLシンクを作成する

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

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

  2. 「Changefeed の作成」をクリックし、ターゲット タイプとしてMySQL を選択します。

  3. MySQL 接続に MySQL エンドポイント、ユーザー名、およびパスワードを入力します。

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

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

    • フィルター ルール: この列でフィルター ルールを設定できます。デフォルトでは、すべてのテーブルを複製するルール*.*があります。新しいルールを追加すると、 TiDB Cloud はTiDB 内のすべてのテーブルを照会し、右側のボックスにルールに一致するテーブルのみを表示します。最大 100 個のフィルター ルールを追加できます。
    • 有効なキーを持つテーブル: この列には、主キーや一意のインデックスなど、有効なキーを持つテーブルが表示されます。
    • 有効なキーのないテーブル: この列には、主キーまたは一意のキーがないテーブルが表示されます。これらのテーブルは、一意の識別子がないと、ダウンストリームが重複イベントを処理するときにデータの一貫性がなくなる可能性があるため、レプリケーション中に問題が発生します。データの一貫性を確保するには、レプリケーションを開始する前に、これらのテーブルに一意のキーまたは主キーを追加することをお勧めします。または、フィルター ルールを追加して、これらのテーブルを除外することもできます。たとえば、ルール"!test.tbl1"使用してテーブルtest.tbl1を除外できます。
  6. イベント フィルターをカスタマイズして、複製するイベントをフィルターします。

    • 一致するテーブル: この列で、イベント フィルターを適用するテーブルを設定できます。ルールの構文は、前のテーブル フィルター領域で使用した構文と同じです。変更フィードごとに最大 10 個のイベント フィルター ルールを追加できます。
    • 無視されるイベント: イベント フィルターが変更フィードから除外するイベントの種類を設定できます。
  7. 「レプリケーションの開始位置」で、MySQL シンクの開始位置を設定します。

    • Dumpling を既存のデータをロードしましたしている場合は、 「特定の TSO からレプリケーションを開始」を選択し、 Dumplingエクスポートされたメタデータ ファイルから取得した TSO を入力します。
    • アップストリーム TiDB クラスターにデータがない場合は、 「今すぐレプリケーションを開始する」を選択します。
    • それ以外の場合は、 「特定の時間からレプリケーションを開始する」を選択して開始時点をカスタマイズできます。
  8. 次へをクリックして、変更フィード仕様を構成します。

    • 「Changefeed 仕様」領域で、Changefeed で使用されるレプリケーション容量単位 (RCU) の数を指定します。
    • 「Changefeed 名」領域で、Changefeed の名前を指定します。
  9. 「次へ」をクリックして、変更フィード構成を確認します。

    すべての構成が正しいことを確認したら、リージョン間レプリケーションのコンプライアンスを確認し、 「作成」をクリックします。

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

  10. シンクはすぐに起動し、シンクのステータスが「作成中」から「実行中」に変わるのがわかります。

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

  11. Dumpling を使用して既存のデータをロードしました持っている場合は、シンクの作成後に GC 時間を元の値 (デフォルト値は10m ) に戻す必要があります。

SET GLOBAL tidb_gc_life_time = '10m';

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