Cloud Storage の転送先を構成する

API を有効にする

転送先の Cloud Storage バケットが Datastream と同じプロジェクトにある場合、Datastream API を有効にするだけで十分です。

別のプロジェクト内のバケットに書き込む場合は、Datastream に関連付けられたサービス アカウントに、バケットにアクセスするための権限を付与する必要があります。

  1. サービス アカウントに使用するメールアドレスを取得します。そのためには、Google Cloud コンソール ホームページでプロジェクト番号を見つけます。サービス アカウントのメールアドレスは、service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com になります。
  2. 転送先バケットに書き込むために必要な権限(通常は roles/storage.objectViewerroles/storage.objectCreatorroles/storage.legacyBucketReader 権限)を、このメールアドレスに付与します。

転送先バケットと接頭辞を指定する

ストリーム構成でプロジェクト名、バケット名、オプションのファイル接頭辞を指定し、データを書き込む場所を決定します。

書き込み動作

  • 特定のストリームのデータは、指定されたバケットまたはファイルの接頭辞([bucket]/[prefix]/[object name]/yyyy/mm/dd/hh/mm/[filename(idempotent)])に書き込まれます。
  • データベース ソースのパス内のオブジェクト名は、スキーマ名の後にテーブル名が続きます(アンダースコア「_」で区切られます)。
  • パスのタイムスタンプ(hh/mm)は、イベント メタデータのソースのタイムスタンプです。
    • バックフィル イベントの場合、タイムスタンプはバックフィル タスクの開始時刻(通常はストリームの開始時またはバックフィルの手動トリガー時)を表します。
    • CDC イベントの場合、タイムスタンプはソースでレコードが変更された時間を表します。
  • 最大ファイルサイズまたは最大タイムアウトのいずれか早い方のタイミングで、ファイルがローテーションされます。Datastream API を使用して、最大ファイルサイズと最大タイムアウト値を調整できます。
  • また、ソースのスキーマの変更が検出される(たとえば、新しい列が追加される)たびに、ファイルがローテーションされます。
  • 同じパス内に同じ時刻のファイルが複数存在する可能性があります。
  • データの使用は、Cloud Storage API に応じて行われます。
  • Cloud Storage にデータをストリーミングする際の最大イベントサイズは 30 MB です。

一般的に、ストリームを初めて実行するときに、バックフィルと CDC に重複があり、イベントが重複します。これは、Datastream が(ストリームの開始前に作成された)現在のデータベース ログファイルからの読み取りを開始し、バックフィルにもキャプチャされる一部のイベントがこのログファイルに含まれている場合に発生します。これは予期される動作で、必要に応じてイベント メタデータを使用して重複イベントを削除できます。