TiDB Cloud Lake へのシンク
このガイドでは、TiDB Cloud Dedicated クラスターから TiDB Cloud Lake へのデータパイプラインをエンドツーエンドで設定する手順を説明します。Dumpling を使用して完全スナップショットを Amazon S3 にエクスポートし、変更フィード を作成して増分変更を同じ S3 ロケーションに継続的に書き込み、TiDB Cloud Lake を設定してスナップショットと増分データの両方をロードします。
制限事項
- TiDB Cloud Lake の Warehouse は、TiDB Cloud Dedicated クラスターと同じリージョンに存在する必要があります。
- 増分レプリケーションできるのは、主キーを持つテーブルのみです。
- クラウドストレージ changefeed を作成するには、TiDB Cloud Dedicated クラスターが v7.1.1 以降で動作している必要があります。詳細は、クラウドストレージへのシンク を参照してください。
- このパイプラインでは、AWS IAM リソースと認証情報、changefeed、TiDB Cloud Lake 統合の手動セットアップと保守が必要です。
- DDL、DML、およびカラム型のサポートの詳細は、TiDB Cloud Lake 向け Data Pipeline SQL 互換性 を参照してください。
前提条件
開始する前に、以下を用意してください。
- TiDB Cloud Dedicated クラスター。デプロイされているリージョンを確認しておいてください。
- Dumpling を実行するマシンからクラスターへのネットワーク接続。パブリック接続、VPC ピアリング、またはプライベートエンドポイントを使用できます。このガイドでは例としてパブリック接続を使用します。
- ソーステーブルを読み取れる SQL ユーザー。このガイドでは例として
rootを使用します。必要な権限については、必要な権限 を参照してください。 - TiDB Cloud Dedicated クラスターと同じリージョンにある Amazon S3 バケット(例:
s3://my-datapipeline-bucket)。 - TiDB Cloud Dedicated クラスターと同じリージョンにある TiDB Cloud Lake の Warehouse。
ステップ 1. S3 バケットへのアクセスを準備する
データパイプラインの各コンポーネント(Dumpling、changefeed、TiDB Cloud Lake)は、すべて同じ S3 バケットへのアクセスが必要です。対象の S3 バケットに必要な権限を持つ IAM ユーザーを作成し、そのユーザーのアクセスキーを作成して、3 つのコンポーネントすべてで同じアクセスキーを使用します。
IAM Console を開き、IAM ユーザー(例:
tidb-cloud-datapipeline-user)を作成します。次の権限ポリシーをユーザーにアタッチします。
<your-bucket-name>と<your-prefix>は実際の値に置き換えてください。{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3BucketAccess", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::<your-bucket-name>" }, { "Sid": "S3ObjectAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:GetObjectVersion", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3:::<your-bucket-name>/<your-prefix>/*" } ] }ユーザーのアクセスキーを作成し、Access Key ID と Secret Access Key を記録します。これらは、スナップショットのエクスポート、changefeed の作成、TiDB Cloud Lake の設定時に必要です。
ステップ 2. Dumpling で完全スナップショットをエクスポートする
TiDB Cloud Dedicated では TiDB Cloud コンソールでエクスポート機能が提供されていないため、Dumpling を使用して完全スナップショットをエクスポートします。
1. ネットワークと SQL ユーザーを準備する
- TiDB Cloud Dedicated クラスターに、Dumpling を実行するマシンから到達できることを確認します。このガイドではパブリック接続を使用します。パブリック接続を使用する場合は、そのマシンの IP アドレスをクラスターの IP アクセスリストに追加してください。詳細は、パブリック接続経由でTiDB Cloud Dedicatedに接続します および IPアクセスリストを設定する を参照してください。
- TiDB Cloud コンソール で、クラスターの概要ページにある Connect をクリックし、接続先のホストとポートを記録します。これらは Dumpling コマンドで必要です。
- Dumpling に必要な権限を持つ SQL ユーザーを準備します。このガイドでは例として
rootを使用します。専用ユーザーを使用する場合は、そのユーザーに Dumpling に必要な権限 を付与してください。
2. Dumpling でスナップショットをエクスポートする
TiDB Cloud Dedicated クラスターに接続できるマシンで Dumpling を実行します。AWS アクセスキーは、access-key および secret-access-key パラメータを使って -o URI に渡します。
tiup dumpling \
-h "<host>" \
-P <port> \
-u "<username>" \
-p "<password>" \
--filetype csv \
--csv-output-dialect snowflake \
--escape-backslash=false \
-o "s3://<bucket>/<prefix>/snapshot/?access-key=<access-key-id>&secret-access-key=<secret-access-key>" \
--s3.region "<region>"
パラメータの説明:
--filetype csvと--csv-output-dialect snowflake: データを Snowflake 方言の CSV 形式でエクスポートします。--escape-backslash=false: バックスラッシュのエスケープを無効にします。- 圧縮はデフォルトで無効です。
-oと--s3.region: エクスポートしたファイルを S3 バケットに書き込みます。-oURI 内のaccess-keyおよびsecret-access-keyパラメータは、バケット用の認証情報を提供します。
エクスポートが正常に完了すると、コマンド出力に JSON サマリーが含まれます。出力内の SessionParams.tidb_snapshot フィールドを見つけ、その値を記録してください。この値は snapshot TSO です。エクスポートしたスナップショットの続きから増分レプリケーションを開始するため、changefeed の作成時に必要になります。
ステップ 3. 増分データ用の changefeed を作成する
TiDB Cloud コンソールでは、TiDB Cloud Dedicated クラスター用のクラウドストレージ changefeed を作成できます。完全な手順については、クラウドストレージへのシンク を参照してください。changefeed を設定する際は、次の設定に注意してください。
- S3 URI: スナップショットと同じプレフィックス配下の
incremental/サブパスを使用します。たとえばs3://<bucket>/<prefix>/incremental/です。 - Bucket Access: AWS Access Key を選択し、ステップ 1. S3 バケットへのアクセスを準備する のアクセスキーを入力します。権限の対象に
incremental/パスが含まれていることを確認してください。 - Start Replication Position: Start replication from a specific TSO を選択し、ステップ 2. Dumpling で完全スナップショットをエクスポートする で記録した snapshot TSO を入力します。
- Data Format: Canal-JSON を選択し、Enable TiDB Extension と Enable Canal Content Compatibility の両方を有効にします。これらの設定により、TiDB Cloud Lake 統合と互換性のある形式でデータが生成されます。
ステップ 4. TiDB Cloud Lake を設定する
TiDB Cloud Lake では、S3 バケットからデータをロードするために、データソースと統合を作成する必要があります。
1. データソースを作成する
- TiDB Cloud Lake console で、Data > Data Sources > Create に移動します。
- Service: TiDB を選択します。
- アクセスキー認証を選択し、以下を入力します。
- Access Key ID と Secret Access Key: ステップ 1. S3 バケットへのアクセスを準備する の認証情報。
- S3 Bucket Name: バケット名のみ(例:
my-datapipeline-bucket。完全な URI ではありません)。 - S3 Region: TiDB Cloud Dedicated クラスターと同じリージョン。
- SQS Queue URL は任意です。イベント駆動の取り込みを有効にしたい場合は、SQS キューをセットアップし、S3 バケット通知を設定し、IAM ユーザーに必要な SQS 権限を付与してください。詳細は、TiDB Cloud Lake 用の Amazon SQS および S3 IAM Role を参照してください。
2. 統合を作成する
- TiDB Cloud Lake console で、Data > Integration > Create に移動します。
- 次のフィールドを入力します。
- Data Source: 上で作成したデータソースを選択します。
- Name: この統合タスクの名前。
- Sync Mode:
Snapshot + CDCを選択して、最初に完全スナップショットをロードし、その後に増分変更を継続的に適用します。 - Table Rules: エクスポートしたすべてのテーブルを同期するには
*.*を指定します。 - Changefeed S3 Prefix:
<prefix>/incremental/。 - Dumpling S3 Prefix:
<prefix>/snapshot/。 - Poll Interval: TiDB Cloud Lake が外部 stage をスキャンして新しいデータを検出する間隔です。デフォルト値は 60 秒です。間隔を短くするとデータレイテンシーは減少しますが、TiDB Cloud Lake のホスティングコストは増加します。
- Merge Interval: TiDB Cloud Lake が増分データを Warehouse にマージする間隔です。デフォルト値は 30 秒です。間隔を短くするとデータレイテンシーは減少しますが、TiDB Cloud Lake のホスティングコストは増加します。
- Warehouse: 対象の Warehouse を選択します。
- Create をクリックします。
- 作成後、統合はデフォルトで Stopped です。統合のアクションボタン > Start をクリックして、データロードを開始します。
関連情報
- DDL、DML、およびカラム型のサポートの詳細は、TiDB Cloud Lake 向け Data Pipeline SQL 互換性 を参照してください。