TiDB Cloudへのシンク
このドキュメントでは、TiDB 専用クラスターから TiDB サーバーレス クラスターにデータをストリーミングする方法について説明します。
注記:
Changefeed 機能を使用するには、TiDB 専用クラスターのバージョンが v6.4.0 以降であることを確認してください。
制限
TiDB Cloudクラスターごとに、最大 5 つの変更フィードを作成できます。
TiDB Cloud はTiCDC を使用して変更フィードを確立するため、同じTiCDC としての制限を持ちます。
レプリケートされるテーブルに主キーまたは NULL 以外の一意のインデックスがない場合、レプリケーション中に一意制約がないため、一部の再試行シナリオでは重複したデータがダウンストリームに挿入される可能性があります。
TiDB Cloudへのシンク機能は、次の AWS リージョンにあり、2022 年 11 月 9 日以降に作成された TiDB 専用クラスターでのみ利用できます。
- AWS オレゴン州 (us-west-2)
- AWS フランクフルト (eu-central-1)
- AWS シンガポール (ap-southeast-1)
- AWS 東京 (ap-northeast-1)
ソース TiDB 専用クラスターと宛先 TiDB サーバーレス クラスターは、同じプロジェクトおよび同じリージョン内に存在する必要があります。
TiDB Cloudへのシンク機能は、プライベート エンドポイント経由のネットワーク接続のみをサポートします。 TiDB 専用クラスターから TiDB サーバーレス クラスターにデータをストリーミングするためのチェンジフィードを作成すると、 TiDB Cloudは2 つのクラスター間のプライベート エンドポイント接続を自動的にセットアップします。
前提条件
Sink to TiDB Cloudコネクタは、特定のTSO以降のみ、TiDB 専用クラスターから TiDB サーバーレス クラスターに増分データをシンクできます。
チェンジフィードを作成する前に、ソース TiDB 専用クラスターから既存のデータをエクスポートし、そのデータを宛先 TiDB サーバーレス クラスターにロードする必要があります。
tidb_gc_life_time次の 2 つの操作の合計時間よりも長くして、その間の履歴データが TiDB によってガベージ コレクションされないようにします。
- 既存のデータをエクスポートおよびインポートする時間
- TiDB Cloudへのシンクを作成する時期が来ました
例えば:
SET GLOBAL tidb_gc_life_time = '720h';バックアップデータを TiDB 専用クラスターからロードし、次にマイダンパー/マイローダーなどのコミュニティ ツールを使用して、宛先 TiDB サーバーレス クラスターにデータをロードします。
Dumplingのエクスポートされたファイルから、メタデータ ファイルからTiDB Cloudシンクの開始位置を取得します。
以下は、メタデータ ファイルの例の一部です。
SHOW MASTER STATUS
のPos
既存データの TSO であり、 TiDB Cloudシンクの開始位置でもあります。Started dump at: 2023-03-28 10:40:19 SHOW MASTER STATUS: Log: tidb-binlog Pos: 420747102018863124 Finished dump at: 2023-03-28 10:40:20
TiDB Cloudシンクを作成する
前提条件を完了したら、データを宛先 TiDB サーバーレス クラスターにシンクできます。
ターゲット TiDB クラスターのクラスター概要ページに移動し、左側のナビゲーション ペインで[Changefeed]をクリックします。
[Create Changefeed]をクリックし、宛先としてTiDB Cloudを選択します。
[TiDB Cloud接続]領域で、宛先 TiDB サーバーレス クラスターを選択し、宛先クラスターのユーザー名とパスワードを入力します。
「次へ」をクリックして 2 つの TiDB クラスター間の接続を確立し、変更フィードがそれらを正常に接続できるかどうかをテストします。
- 「はい」の場合、次の構成ステップに進みます。
- そうでない場合は、接続エラーが表示されるため、エラーを処理する必要があります。エラーが解決したら、もう一度「次へ」をクリックします。
テーブル フィルターをカスタマイズして、複製するテーブルをフィルターします。ルールの構文については、 テーブルフィルタールールを参照してください。
- フィルター ルール: この列でフィルター ルールを設定できます。デフォルトでは、すべてのテーブルを複製することを表すルール
*. *
があります。新しいルールを追加すると、 TiDB CloudはTiDB 内のすべてのテーブルをクエリし、ルールに一致するテーブルのみを右側のボックスに表示します。 - 複製されるテーブル: この列には、複製されるテーブルが表示されます。ただし、今後複製される新しいテーブルや完全に複製されるスキーマは表示されません。
- 有効なキーのないテーブル: この列には、一意キーと主キーのないテーブルが表示されます。これらのテーブルでは、ダウンストリーム システムが重複イベントを処理するために一意の識別子を使用できないため、レプリケーション中にデータが不整合になる可能性があります。このような問題を回避するには、レプリケーションの前にこれらのテーブルに一意キーまたは主キーを追加するか、これらのテーブルをフィルターで除外するフィルター ルールを設定することをお勧めします。たとえば、「!test.tbl1」を使用してテーブル
test.tbl1
を除外できます。
- フィルター ルール: この列でフィルター ルールを設定できます。デフォルトでは、すべてのテーブルを複製することを表すルール
[レプリケーション開始位置]領域に、 Dumplingでエクスポートされたメタデータ ファイルから取得した TSO を入力します。
「次へ」をクリックして、変更フィード仕様を構成します。
- 「変更フィードの仕様」領域で、変更フィードで使用するレプリケーション キャパシティ ユニット (RCU) の数を指定します。
- 「変更フィード名」領域で、変更フィードの名前を指定します。
「次へ」をクリックして、Changefeed 構成を確認します。
すべての構成が正しいことを確認したら、リージョン間のレプリケーションのコンプライアンスをチェックし、 「作成」をクリックします。
一部の構成を変更する場合は、 「前へ」をクリックして前の構成ページに戻ります。
シンクが間もなく開始され、シンクのステータスが[作成中]から[実行中]に変化することがわかります。
変更フィード名をクリックすると、チェックポイント、レプリケーションレイテンシー、その他のメトリックなど、変更フィードに関する詳細が表示されます。
シンクの作成後、 tidb_gc_life_time元の値 (デフォルト値は
10m
) に戻します。SET GLOBAL tidb_gc_life_time = '10m';