クラウドストレージに保存

このドキュメントでは、TiDB Cloudからクラウドstorageにデータをストリーミングするための変更フィードを作成する方法について説明します。現在、Amazon S3 と GCS がサポートされています。

注記:

  • データをクラウドstorageにストリーミングするには、TiDB クラスターのバージョンが v7.1.1 以降であることを確認してください。TiDB TiDB Cloud Dedicated クラスターを v7.1.1 以降にアップグレードするには、 TiDB Cloudサポートにお問い合わせください実行します。
  • TiDB Cloudサーバーレスクラスターでは、changefeed 機能は使用できません。

制限

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

ステップ1. 宛先を設定する

ターゲット TiDB クラスターのクラスター概要ページに移動します。左側のナビゲーション ペインで[Changefeed]をクリックし、 [Changefeed の作成]クリックして、送信先としてAmazon S3またはGCSを選択します。設定プロセスは、選択した送信先によって異なります。

  • Amazon S3
  • GCS

Amazon S3の場合、 S3 エンドポイント領域にS3 URIAccess Key IDSecret Access Keyを入力します。S3 バケットを TiDB クラスターと同じリージョンに作成します。

s3_endpoint

GCSの場合、 GCS エンドポイントを入力する前に、まず GCS バケットへのアクセスを許可する必要があります。次の手順を実行します。

  1. TiDB Cloudコンソールで、サービス アカウント IDを記録します。この ID は、 TiDB Cloudに GCS バケットへのアクセスを許可するために使用されます。

    gcs_endpoint

  2. Google Cloud コンソールで、GCS バケットのIAMロールを作成します。

    1. Google Cloud コンソールにサインインします。

    2. 役割ページに移動し、 [ロールの作成]クリックします。

      Create a role

    3. ロールの名前、説明、ID、およびロール起動ステージを入力します。ロールの作成後は、ロール名を変更できません。

    4. [権限の追加]をクリックします。次の権限をロールに追加し、 [追加]をクリックします。

      • storage.buckets.get
      • storage.オブジェクト.作成
      • storage.オブジェクト.削除
      • storage.objects.get
      • storage.objects.list
      • storage.objects.update

    Add permissions

  3. バケツページに移動し、 TiDB Cloudがアクセスする GCS バケットを選択します。GCS バケットは TiDB クラスターと同じリージョンにある必要があることに注意してください。

  4. バケットの詳細ページで、 「権限」タブをクリックし、 「アクセス権の付与」をクリックします。

    Grant Access to the bucket

  5. バケットへのアクセスを許可するには次の情報を入力し、 「保存」をクリックします。

    • [新しいプリンシパル]フィールドに、前に記録したターゲット TiDB クラスターのサービス アカウント IDを貼り付けます。

    • [ロールの選択]ドロップダウン リストに、作成したIAMロールの名前を入力し、フィルター結果から名前を選択します。

    注記:

    TiDB Cloudへのアクセスを削除するには、許可したアクセスを削除するだけです。

  6. バケットの詳細ページで、 「オブジェクト」タブをクリックします。

    • バケットの gsutil URI を取得するには、コピー ボタンをクリックし、プレフィックスとしてgs://追加します。たとえば、バケット名がtest-sink-gcsの場合、URI はgs://test-sink-gcs/になります。

      Get bucket URI

    • フォルダの gsutil URI を取得するには、フォルダを開いてコピー ボタンをクリックし、プレフィックスとしてgs://追加します。たとえば、バケット名がtest-sink-gcsでフォルダ名がchangefeed-xxx場合、URI はgs://test-sink-gcs/changefeed-xxx/になります。

      Get bucket URI

  7. TiDB Cloudコンソールで、Changefeed の[宛先の構成]ページに移動し、バケットの gsutil URIフィールドに入力します。

「次へ」をクリックして、 TiDB Cloud Dedicated クラスターから Amazon S3 または GCS への接続を確立します。TiDB TiDB Cloud は、接続が成功したかどうかを自動的にテストして検証します。

  • はいの場合は、構成の次の手順に進みます。
  • そうでない場合は、接続エラーが表示されるので、エラーを処理する必要があります。エラーが解決したら、 [次へ]をクリックして接続を再試行してください。

ステップ2. レプリケーションを構成する

  1. テーブル フィルターをカスタマイズして、複製するテーブルをフィルターします。ルール構文については、 テーブルフィルタルールを参照してください。

    the table filter of changefeed

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

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

    • 今からレプリケーションを開始します
    • 特定のTSOからレプリケーションを開始する
    • 特定の時間からレプリケーションを開始する
  4. データ形式領域で、 CSVまたはCanal-JSON形式を選択します。

    • Configure CSV format
    • Configure Canal-JSON format

    CSV形式を設定するには、次のフィールドに入力します。

    • バイナリエンコード方式: バイナリデータのエンコード方式。base64 (デフォルト) またはhex**選択できます。AWS DMS と統合する場合はhex を**使用します。
    • 日付区切り: 年、月、日に基づいてデータを回転するか、まったく回転しないことを選択します。
    • 区切り文字: CSV ファイル内の値を区切る文字を指定します。最もよく使用される区切り文字はカンマ ( , ) です。
    • 引用符: 区切り文字または特殊文字を含む値を囲むために使用する文字を指定します。通常、引用符文字として二重引用符 ( " ) が使用されます。
    • Null/空の値: CSV ファイルで Null または空の値をどのように表現するかを指定します。これは、データを適切に処理および解釈するために重要です。
    • コミット Ts を含める: CSV 行にcommit-tsを含めるかどうかを制御します。

    Canal-JSON はプレーンな JSON テキスト形式です。設定するには、次のフィールドに入力します。

    • 日付区切り: 年、月、日に基づいてデータを回転するか、まったく回転しないことを選択します。
    • TiDB 拡張を有効にする: このオプションを有効にすると、TiCDC はウォーターマークイベント送信し、 TiDB拡張フィールド Canal-JSON メッセージに追加します。
  5. フラッシュ パラメータ領域では、次の 2 つの項目を設定できます。

    • フラッシュ間隔: デフォルトでは 60 秒に設定されていますが、2 秒から 10 分の範囲で調整可能です。
    • ファイル サイズ: デフォルトでは 64 MB に設定されていますが、1 MB ~ 512 MB の範囲で調整可能です。

    Flush Parameters

    注記:

    これら 2 つのパラメータは、個々のデータベース テーブルごとにクラウドstorageに生成されるオブジェクトの量に影響します。テーブルが多数ある場合、同じ構成を使用すると生成されるオブジェクトの数が増え、クラウドstorageAPI の呼び出しコストが増加します。したがって、復旧ポイント目標 (RPO) とコスト要件に基づいてこれらのパラメータを適切に構成することをお勧めします。

ステップ3.仕様を構成する

次へをクリックして、変更フィード仕様を構成します。

  1. 「Changefeed 仕様」領域で、Changefeed で使用されるレプリケーション容量単位 (RCU) の数を指定します。
  2. 「Changefeed 名」領域で、Changefeed の名前を指定します。

ステップ4. 構成を確認してレプリケーションを開始する

「次へ」をクリックして、変更フィード構成を確認します。

  • すべての構成が正しいことを確認したら、 「作成」をクリックして変更フィードの作成を続行します。
  • 設定を変更する必要がある場合は、 「前へ」をクリックして戻って必要な変更を加えます。

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

変更フィードの名前をクリックすると、その詳細ページに移動します。このページでは、チェックポイントのステータス、レプリケーションのレイテンシー、その他の関連メトリックなど、変更フィードに関する詳細情報を表示できます。

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