📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

クラウドストレージへのシンク



このドキュメントでは、TiDB Cloud Dedicated からクラウドストレージにデータをストリーミングするためのチェンジフィードを作成する方法について説明します。

制限

  • TiDB Cloud Dedicatedクラスターでは、最大 100 個のチェンジフィードを作成できます。
  • TiDB Cloud は TiCDC を使用してチェンジフィードを確立するため、TiCDC と同じ制限があります。
  • 複製対象のテーブルに主キーまたは NULL を許容しない一意インデックスがない場合、複製中に一意制約が存在しないことで、一部の再試行シナリオにおいて、下流で重複データが挿入される可能性があります。

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

対象のTiDB Cloud Dedicatedクラスターの概要ページに移動します。左側のナビゲーションペインでData > Changefeedをクリックし、Create ChangefeedをクリックしてDestinationページに移動します。次に、TiDB Cloud Dedicatedクラスターがホストされているクラウドプロバイダーに応じて、宛先としてAmazon S3GCS、またはAzure Blob Storageを選択します。設定プロセスは、選択した宛先によって異なります。

    Amazon S3の認証には、AWS Role ARNまたはAWS access keyのいずれかを使用できます。セキュリティの強化と管理の容易さのため、AWS Role ARNの使用をお勧めします。

    オプション1: AWS Role ARN(推奨)

    認証にIAMロールを使用するには、以下の手順に従ってください。

    1. Amazon S3 のDestinationページで、S3 URIを入力します。S3 バケットが TiDB Cloud Dedicatedクラスター と同じ AWS リージョンにあることを確認してください。

    2. Bucket Accessで、AWS Role ARNを選択します。

    3. 新しい Role ARN を作成するには、Click here to create new one with AWS CloudFormationをクリックします。このテンプレートは必要な権限を自動的に設定します。

      手動でロールを作成する場合は、Create Role ARN manuallyをクリックして、TiDB Cloudアカウント情報と必要なポリシーを確認してください。

    4. IAMロールに、対象バケットに対して少なくとも以下の権限があることを確認してください。

      • s3:ListBucket
      • s3:PutObject
      • s3:GetObject
      • s3:DeleteObject
    5. 生成されたRole ARNを対応するフィールドに貼り付けます。

    オプション2: AWS access key

    access key を使用して認証するには、以下の手順に従ってください。

    1. Amazon S3 のDestinationページで、S3 URIを入力します。S3 バケットが TiDB Cloud Dedicatedクラスター と同じ AWS リージョンにあることを確認してください。

    2. Bucket Accessで、AWS Access Keyを選択します。

    3. 以下のフィールドに入力します。

      • Access Key ID
      • Secret Access Key

    GCSの場合、GCS Endpointを入力する前に、まず GCS バケットへのアクセス権を付与する必要があります。以下の手順に従ってください。

    1. TiDB Cloudコンソールで、Service Account IDを記録します。これは、TiDB Cloudに GCS バケットへのアクセス権を付与するために使用されます。

      gcs_endpoint

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

      1. Google Cloud consoleにサインインします。

      2. Rolesページに移動し、Create roleをクリックします。

        Create a role

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

      4. Add permissionsをクリックします。ロールに以下の権限を追加し、Addをクリックします。

        • storage.buckets.get
        • storage.objects.create
        • storage.objects.delete
        • storage.objects.get
        • storage.objects.list
        • storage.objects.update

      Add permissions

    3. Bucketページに移動し、TiDB Cloud にアクセスさせる GCS バケットを選択します。GCS バケットは、TiDB クラスターと同じリージョンにある必要があります。

    4. Bucket detailsページで、Permissionsタブをクリックし、Grant accessをクリックします。

      Grant Access to the bucket

    5. バケットへのアクセス権を付与するため、以下の情報を入力し、Saveをクリックします。

      • New Principalsフィールドに、先ほど記録した対象 TiDB クラスターのService Account IDを貼り付けます。
      • Select a roleドロップダウンリストに、先ほど作成した IAM ロールの名前を入力し、フィルター結果からその名前を選択します。
    6. Bucket detailsページで、Objectsタブをクリックします。

      • バケットの 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 のDestinationページに移動し、bucket gsutil URIフィールドに入力します。

    Azure Blob Storageの場合、まず Azure portal でコンテナーを設定し、SAS トークンを取得する必要があります。以下の手順に従ってください。

    1. Azure portalで、changefeed データを保存するコンテナーを作成します。

      1. 左側のナビゲーションペインでStorage Accountsをクリックし、ストレージアカウントを選択します。
      2. ストレージアカウントのナビゲーションメニューで、Data storage > Containersを選択し、+ Containerをクリックします。
      3. 新しいコンテナーの名前を入力し、匿名アクセスレベルを設定します(推奨レベルはPrivateです)。その後、Createをクリックします。
    2. 対象コンテナーの URL を取得します。

      1. コンテナー一覧で、対象のコンテナーを選択します。
      2. コンテナーの...をクリックし、Container propertiesを選択します。
      3. URLの値を後で使用するために保存します。たとえば https://<storage_account>.blob.core.windows.net/<container> です。
    3. SAS トークンを生成します。

      1. ストレージアカウントのナビゲーションメニューで、Security + networking > Shared access signatureを選択します。

      2. Allowed servicesセクションで、Blobを選択します。

      3. Allowed resource typesセクションで、ContainerObjectを選択します。

      4. Allowed permissionsセクションで、ReadWriteDeleteListCreateを選択します。

      5. SAS トークンの有効期間を、要件を満たすのに十分な長さで指定します。

      6. Generate SAS and connection stringをクリックし、SAS tokenを保存します。

        Generate a SAS token

    4. TiDB Cloud consoleで、Changefeed のDestinationページに移動し、以下のフィールドに入力します。

      • Blob URL: 手順 2 で取得したコンテナー URL を入力します。必要に応じてプレフィックスを追加できます。
      • SAS Token: 手順 3 で取得した生成済みの SAS トークンを入力します。

    Nextをクリックして、TiDB Cloud Dedicatedクラスター からクラウドストレージへの接続を確立します。TiDB Cloudは、接続が成功したかどうかを自動的にテストして検証します。

    • 成功した場合は、次の設定ステップに進みます。
    • 失敗した場合は、接続エラーが表示されるため、エラーに対処する必要があります。エラーを解消したら、Nextをクリックして接続を再試行してください。

    ステップ2. レプリケーションの設定

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

      the table filter of changefeed

      • Case Sensitive:フィルタルールにおけるデータベース名とテーブル名の照合において、大文字小文字を区別するかどうかを設定できます。デフォルトでは、大文字小文字は区別されません。
      • Filter Rules:この列でフィルタルールを設定できます。デフォルトでは、すべてのテーブルを複製するルール*.*が設定されています。新しいルールを追加すると、 TiDB Cloud はTiDB 内のすべてのテーブルをクエリし、右側のボックスにルールに一致するテーブルのみを表示します。フィルタルールは最大 100 個まで追加できます。
      • Tables with valid keys:この列には、主キーや一意インデックスなど、有効なキーを持つテーブルが表示されます。
      • Tables without valid keys: この列には、主キーまたは一意キーがないテーブルが表示されます。一意の識別子がないと、下流で重複イベントを処理する際にデータの一貫性が失われる可能性があるため、これらのテーブルはレプリケーション中に問題となります。データの一貫性を確保するには、レプリケーションを開始する前に、これらのテーブルに一意キーまたは主キーを追加することをお勧めします。または、フィルタルールを使用してこれらのテーブルを除外することもできます。たとえば、ルールtest.tbl1を使用して、テーブル"!test.tbl1"
    2. Event Filterをカスタマイズして、複製したいイベントを絞り込みます。

      • Tables matching:この列では、イベントフィルターを適用するテーブルを設定できます。ルールの構文は、前のTable Filter領域で使用されているものと同じです。変更フィードごとに最大10個のイベントフィルタールールを追加できます。
      • Event Filter:以下のイベントフィルターを使用して、変更フィードから特定のイベントを除外できます。
        • Ignore event:指定されたイベントタイプを除外します。
        • Ignore SQL: 指定された式に一致する DDL イベントを除外します。たとえば、 ^drop DROPで始まるステートメントを除外し、 add columnADD COLUMNを含むステートメントを除外します。
        • Ignore insert value expression: 特定の条件を満たすINSERT文を除外します。たとえば、id >= 100は、idが 100 以上であるINSERT文を除外します。
        • 新しい値の更新式を無視する: 新しい値が指定された条件に一致するUPDATE文を除外します。たとえば、 gender = 'male'gendermaleになるような更新を除外します。
        • 古い値の更新を無視する式: 古い値が指定された条件に一致するUPDATE文を除外します。たとえば、 age < 18 ageの古い値が 18 未満である場合の更新を除外します。
        • Ignore delete value expression: 指定された条件を満たすDELETE文を除外します。たとえば、name = 'john'name'john'であるDELETE文を除外します。
    3. Start Replication Position領域で、以下のいずれかのレプリケーション位置を選択します。

      • 今からレプリケーションを開始します
      • 特定のTSOからレプリケーションを開始する
      • 特定の時間からレプリケーションを開始する
    4. Data Format領域で、 CSV形式またはCanal-JSON形式のいずれかを選択してください。

        CSV形式を設定するには、以下の項目を入力してください。

        • Binary Encode Method:バイナリデータのエンコード方式。base64(デフォルト)またはhexを選択できます。AWS DMSと連携する場合は、 hexを使用してください。
        • Date Separator:年、月、日に基づいてデータをローテーションするか、ローテーションしないかを選択します。
        • 区切り文字:CSVファイル内の値を区切る文字を指定します。最も一般的に使用される区切り文字はカンマ( , )です。
        • 引用符:区切り文字または特殊文字を含む値を囲むために使用する文字を指定します。通常、引用符には二重引用符( " )が使用されます。
        • Null/Empty Values:CSVファイル内でnull値または空値がどのように表現されるかを指定します。これは、データの適切な処理と解釈のために重要です。
        • Include Commit Ts:CSV行にcommit-tsを含めるかどうかを制御します。

        Canal-JSONは、プレーンなJSONテキスト形式です。設定するには、以下のフィールドに入力してください。

        • Date Separator:年、月、日に基づいてデータをローテーションするか、ローテーションしないかを選択します。
        • Enable TiDB Extension: このオプションを有効にすると、TiCDC はウォーターマークイベントを送信し、 TiDB拡張フィールドCanal-JSON メッセージに追加します。
      • Flush Parameters領域では、次の2つの項目を設定できます。

        • Flush Interval:デフォルトでは60秒に設定されていますが、2秒から10分の範囲で調整可能です。
        • File Size:デフォルトでは64MBに設定されていますが、1MBから512MBの範囲で調整可能です。

        Flush Parameters

      • Split Eventエリアで、 UPDATEイベントを別々のDELETEINSERTイベントに分割するか、生のUPDATEイベントとして保持するかを選択します。詳細については、 MySQL以外のシンクにおける、主キーまたは一意キーを分割したUPDATEイベントを参照してください。

      ステップ3.仕様の設定

      Nextをクリックして、変更フィードの仕様を設定してください。

      1. Changefeed Specification領域で、変更フィードで使用するレプリケーション容量ユニット(RCU)の数を指定します。
      2. Changefeed Name欄に、変更フィードの名前を指定します。

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

      Nextをクリックして、変更フィードの設定を確認してください。

      • すべての設定が正しいことを確認したら、 Createをクリックして変更フィードの作成に進んでください。
      • 設定を変更する必要がある場合は、 Previousをクリックして戻り、必要な変更を行ってください。

      シンクはまもなく起動し、シンクの状態がCreatingからRunningに変わるのが確認できます。

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

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