3つのデータセンター展開におけるローカル読み取りのベストプラクティス
3つのデータセンターモデルでは、リージョンには各データセンターに分離された3つのレプリカが存在します。しかし、強力な整合性のある読み取りが求められるため、TiDBはすべてのクエリにおいて、対応するデータのLeaderレプリカにアクセスする必要があります。クエリがLeaderレプリカとは異なるデータセンターで生成された場合、TiDBは別のデータセンターからデータを読み取る必要があり、アクセスレイテンシーが増加します。
このドキュメントでは、 ステイル読み取り機能を使用して、センター間アクセスを回避し、リアルタイムのデータ可用性を犠牲にしてアクセスのレイテンシーを削減する方法について説明します。
3つのデータセンターのTiDBクラスタをデプロイ
3 つのデータセンターの展開方法については、 1 つの地域展開における複数のデータセンターを参照してください。
TiKVノードとTiDBノードの両方に構成項目labels設定されている場合、同じデータセンター内のTiKVノードとTiDBノードのラベルzone値は同一である必要があります。例えば、TiKVノードとTiDBノードの両方がデータセンターdc-1にある場合、2つのノードに以下のラベルを設定する必要があります。
[labels]
zone=dc-1
ステイル読み取りを使用してローカル読み取りを実行する
ステイル読み取りは、TiDBがユーザーに履歴データ読み取りのために提供するメカニズムです。このメカニズムを使用することで、特定の時点または指定された時間範囲内の対応する履歴データを読み取ることができ、storageノード間のデータ複製によって生じるレイテンシーを削減できます。地理的に分散されたデプロイメントの一部のシナリオでステイル読み取りを使用する場合、TiDBはリアルタイムパフォーマンスを犠牲にして現在のデータセンター内のレプリカにアクセスし、対応するデータを読み取ります。これにより、センター間接続によって生じるネットワークレイテンシーを回避し、クエリプロセス全体のアクセスレイテンシーを削減します。
TiDB がステイル読み取りクエリを受信すると、その TiDB ノードのzoneラベルが設定されていて、 tidb_replica_read closest-replicasに設定されている場合、TiDB は対応するデータ レプリカが存在する同じzoneラベルを持つ TiKV ノードに要求を送信します。
ステイル読み取り の実行方法については、 AS OF TIMESTAMP句を使用してステイル読み取りを実行する参照してください。