📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

読み取り専用ストレージノードのベストプラクティス

このドキュメントでは、読み取り専用storageノードの設定方法と、バックアップ、分析、テストなどのトラフィックをこれらのノードに誘導する方法を紹介します。これにより、遅延許容度の高い負荷を重要なオンラインサービスから物理的に分離できます。

手順

1. 一部のTiKVノードを読み取り専用として指定する

一部のTiKVノードを読み取り専用として指定するには、これらのノードに特別なラベル(ラベルキーのプレフィックスとして$使用)を付けます。配置ルールを使用してこれらのノードにデータを格納するように明示的に指定しない限り、PDはこれらのノードにデータをスケジュールしません。

tiup cluster edit-configコマンドを実行して読み取り専用ノードを構成できます。

tikv_servers: - host: ... ... labels: $mode: readonly

2. 配置ルールを使用して、学習者として読み取り専用ノードにデータを保存する

  1. pd-ctl config placement-rulesコマンドを実行して、デフォルトの配置ルールをエクスポートします。

    pd-ctl config placement-rules rule-bundle load --out="rules.json"

    以前に配置ルールを構成していない場合、出力は次のようになります。

    [ { "group_id": "pd", "group_index": 0, "group_override": false, "rules": [ { "group_id": "pd", "id": "default", "start_key": "", "end_key": "", "role": "voter", "count": 3 } ] } ]
  2. すべてのデータを学習者として読み取り専用ノードに保存します。以下の例はデフォルトの設定に基づいています。

    [ { "group_id": "pd", "group_index": 0, "group_override": false, "rules": [ { "group_id": "pd", "id": "default", "start_key": "", "end_key": "", "role": "voter", "count": 3 }, { "group_id": "pd", "id": "readonly", "start_key": "", "end_key": "", "role": "learner", "count": 1, "label_constraints": [ { "key": "$mode", "op": "in", "values": [ "readonly" ] } ], "version": 1 } ] } ]
  3. 上記の構成を PD に書き込むには、 pd-ctl config placement-rulesコマンドを使用します。

    pd-ctl config placement-rules rule-bundle save --in="rules.json"

注記:

  • 大規模なデータセットを持つクラスターで上記の操作を実行すると、クラスター全体のデータが読み取り専用ノードに完全に複製されるまでに時間がかかる場合があります。この間、読み取り専用ノードはサービスを提供できない可能性があります。
  • バックアップの特別な実装のため、各ラベルの学習者数は 1 を超えることはできません。そうでない場合、バックアップ中に重複データが生成されます。

3. Follower Readを使用して読み取り専用ノードからデータを読み取る

3.1 TiDBでFollower Readを使用する

TiDB を使用するときに読み取り専用ノードからデータを読み取るには、システム変数tidb_replica_readlearnerに設定します。

set tidb_replica_read=learner;

3.2 TiSparkでFollower Readを使用する

TiSpark を使用するときに読み取り専用ノードからデータを読み取るには、Spark 構成ファイルで構成項目spark.tispark.replica_readlearner設定します。

spark.tispark.replica_read learner

3.3 クラスターデータのバックアップ時にFollower Readを使用する

クラスターデータのバックアップ時に読み取り専用ノードからデータを読み取るには、brコマンドラインで--replica-read-labelオプションを指定します。シェルで次のコマンドを実行する際は、 $解析されないように、ラベルを一重引用符で囲む必要があることに注意してください。

tiup br backup full ... --replica-read-label '$mode:readonly'

このページは役に立ちましたか?