TiDB Cloudにシンクする
このドキュメントでは、TiDB Cloud DedicatedクラスターからTiDB Cloud StarterまたはTiDB Cloud Essentialインスタンスにデータをストリーミングする方法について説明します。
制限
TiDB Cloudの各クラスターにつき、最大100個のチェンジフィードを作成できます。
TiDB Cloud はTiCDC を使用して変更フィードを確立するため、同じTiCDCの制限があります。
複製対象のテーブルに主キーまたはNULLを許容しない一意インデックスがない場合、複製中に一意制約が存在しないことで、一部の再試行シナリオにおいて、下流で重複データが挿入される可能性があります。
Sink to TiDB Cloud機能は、以下のAWSリージョンにあり、2022年11月9日以降に作成されたTiDB Cloud Dedicatedクラスターでのみ利用可能です。
- AWSオレゴン(米国西部2)
- AWS フランクフルト (eu-central-1)
- AWSシンガポール (ap-southeast-1)
- AWS東京 (ap-northeast-1)
ソースとなるTiDB Cloud Dedicatedクラスターと、宛先となるTiDB Cloud StarterまたはTiDB Cloud Essentialインスタンスは、同じプロジェクトおよび同じリージョンに属している必要があります。
Sink to TiDB Cloud機能は、プライベートエンドポイント経由のネットワーク接続のみをサポートしています。TiDB Cloud DedicatedクラスタからTiDB Cloud StarterまたはTiDB Cloud Essentialインスタンスにデータをストリーミングするためのチェンジフィードを作成すると、 TiDB Cloudは2つのクラスタ間のプライベートエンドポイント接続を自動的に設定します。
前提条件
Sink to TiDB Cloudコネクタは、特定のTSOの後、 TiDB Cloud DedicatedクラスタからTiDB Cloud StarterまたはTiDB Cloud Essentialインスタンスに増分データをシンクすることのみが可能です。
変更フィードを作成する前に、ソースのTiDB Cloud Dedicatedクラスターから既存のデータをエクスポートし、そのデータを宛先のTiDB Cloud StarterまたはTiDB Cloud Essentialインスタンスにロードする必要があります。
tidb_gc_life_time以下の 2 つの操作の合計時間よりも長く設定することで、その期間中の履歴データが TiDB によってガベージ コレクションされないようにします。- 既存データのエクスポートとインポートにかかる時間
- Sink to TiDB Cloudを作成する時間
例えば:
SET GLOBAL tidb_gc_life_time = '720h';Dumplingを使用してTiDB Cloud Dedicatedクラスターからデータをエクスポートし、 インポート機能を使用して宛先のTiDB Cloud StarterまたはTiDB Cloud Essentialインスタンスにデータをロードします。
Dumplingのエクスポートファイルのメタデータ ファイルからTiDB Cloudシンクの開始位置を取得します。
以下はメタデータファイルの例の一部です。
PosのSHOW MASTER STATUSは、既存データの 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 Cloud StarterまたはTiDB Cloud Essentialインスタンスにシンクできます。
対象のTiDBクラスタのクラスタ概要ページに移動し、左側のナビゲーションペインでData > Changefeedをクリックします。
Create Changefeedをクリックし、宛先としてTiDB Cloudを選択します。
TiDB Cloud Connectionエリアで、接続先のTiDB Cloud StarterまたはTiDB Cloud Essentialインスタンスを選択し、接続先のインスタンスのユーザー名とパスワードを入力します。
Nextをクリックして、2つのTiDBクラスター間の接続を確立し、changefeedがそれらを正常に接続できるかどうかをテストします。
- はいの場合、次の設定手順に進みます。
- そうでない場合は、接続エラーが表示されますので、エラーを処理してください。エラーが解決したら、もう一度Nextをクリックしてください。
Table Filterカスタマイズして、複製するテーブルをフィルターします。ルールの構文については、テーブルフィルタルールを参照してください。
- Case Sensitive:フィルタルールにおけるデータベース名とテーブル名の照合において、大文字小文字を区別するかどうかを設定できます。デフォルトでは、大文字小文字は区別されません。
- Filter Rules:この列でフィルタルールを設定できます。デフォルトでは、すべてのテーブルを複製するルール
*.*が設定されています。新しいルールを追加すると、 TiDB Cloud はTiDB 内のすべてのテーブルをクエリし、右側のボックスにルールに一致するテーブルのみを表示します。フィルタルールは最大 100 個まで追加できます。 - Tables with valid keys:この列には、主キーや一意インデックスなど、有効なキーを持つテーブルが表示されます。
- Tables without valid keys: この列には、主キーまたは一意キーがないテーブルが表示されます。一意の識別子がないと、ダウンストリームが重複イベントを処理する際にデータの一貫性が失われる可能性があるため、これらのテーブルはレプリケーション中に問題となります。データの一貫性を確保するには、レプリケーションを開始する前に、これらのテーブルに一意キーまたは主キーを追加することをお勧めします。または、フィルタルールを追加してこれらのテーブルを除外することもできます。たとえば、ルール
test.tbl1を使用して、テーブル"!test.tbl1"除外できます。
Event Filterをカスタマイズして、複製したいイベントを絞り込みます。
- Tables matching:この列では、イベントフィルターを適用するテーブルを設定できます。ルールの構文は、前のTable Filter領域で使用されているものと同じです。変更フィードごとに最大10個のイベントフィルタールールを追加できます。
- Event Filter:以下のイベントフィルターを使用して、変更フィードから特定のイベントを除外できます。
- Ignore event:指定されたイベントタイプを除外します。
- Ignore SQL: 指定された式に一致する DDL イベントを除外します。たとえば、
^dropDROPで始まるステートメントを除外し、add columnはADD COLUMNを含むステートメントを除外します。 - Ignore insert value expression: 特定の条件を満たす
INSERTステートメントを除外します。たとえば、id >= 100は、INSERTが 100 以上であるidステートメントを除外します。 - 新しい値の更新式を無視する: 新しい値が指定された条件に一致する
UPDATEステートメントを除外します。たとえば、gender = 'male'はgenderがmaleになるような更新を除外します。 - 古い値の更新を無視する式: 古い値が指定された条件に一致する
UPDATEステートメントを除外します。たとえば、age < 18ageの古い値が 18 未満である場合の更新を除外します。 - Ignore delete value expression: 指定された条件を満たす
DELETEステートメントを除外します。たとえば、name = 'john'はDELETEがnameである'john'ステートメントを除外します。
Start Replication Position領域に、Dumplingでエクスポートしたメタデータファイルから取得したTSOを入力します。
Nextをクリックして、変更フィードの仕様を設定してください。
- Changefeed Specification領域で、変更フィードで使用するレプリケーション容量ユニット(RCU)の数を指定します。
- Changefeed Name欄に、変更フィードの名前を指定します。
Nextをクリックして、変更フィードの設定を確認してください。
すべての構成が正しいことを確認したら、リージョン間レプリケーションの準拠性をチェックし、 Createをクリックします。
設定を変更したい場合は、 Previousをクリックして前の設定ページに戻ってください。
シンクはまもなく開始され、シンクのステータスがCreatingからRunningに変わるのが確認できます。
変更フィード名をクリックすると、チェックポイント、レプリケーションレイテンシー、その他のメトリックなど、変更フィードに関する詳細情報が表示されます。
シンクが作成された後、
tidb_gc_life_time元の値(デフォルト値は10m)に戻します。SET GLOBAL tidb_gc_life_time = '10m';