チェックポイント バックアップ
ディスクの枯渇やノードのクラッシュなどの回復可能なエラーが原因で、スナップショット バックアップが中断される場合があります。 TiDB v6.5.0 より前では、中断前にバックアップされたデータは、エラーが解決された後でも無効になり、最初からバックアップを開始する必要がありました。大規模なクラスターの場合、これにはかなりの追加コストが発生します。
TiDB v6.5.0 では、バックアップと復元 (BR) にチェックポイント バックアップ機能が導入され、中断されたバックアップを続行できるようになりました。この機能はデフォルトで有効になっています。この機能を有効にすると、中断されたバックアップのほとんどのデータを保持できます。
アプリケーション シナリオ
TiDB クラスターが大きく、障害後に再度バックアップする余裕がない場合は、チェックポイント バックアップ機能を使用できます。 br コマンドライン ツール (以降、 br
と呼びます) は、バックアップされたシャードを定期的に記録します。このようにして、次のバックアップの再試行では、異常終了に近いバックアップの進行状況を使用できます。
使用制限
チェックポイント バックアップは GC メカニズムに依存しており、バックアップされたすべてのデータを回復することはできません。以下のセクションで詳細を説明します。
バックアップの再試行は GC の前に行う必要があります
バックアップ中、 br
定期的に PD のgc-safepoint
のバックアップ スナップショットを更新し、データがガベージ コレクションされるのを回避します。 br
終了すると、 gc-safepoint
更新が間に合いません。その結果、次のバックアップの再試行の前に、データがガベージ コレクションされる可能性があります。
このような状況を回避するために、 gcttl
が指定されていない場合、デフォルトでbr
gc-safepoint
を約 1 時間保持します。必要に応じて、 gcttl
パラメータを設定して保存期間を延長できます。
次の例では、 gcttl
~ 15 時間 (54000 秒) を設定して、保持期間gc-safepoint
を延長します。
br backup full \
--storage local:///br_data/ --pd "${PD_IP}:2379" \
--gcttl 54000
ノート:
バックアップ前に作成された
gc-safepoint
スナップショット バックアップの完了後に削除されます。手動で削除する必要はありません。
一部のデータを再度バックアップする必要があります
br
がバックアップを再試行する場合、バックアップされるデータやチェックポイントによって記録されなかったデータなど、バックアップされたデータの一部を再度バックアップする必要がある場合があります。
エラーによる中断の場合、
br
終了前にバックアップされたデータのメタ情報を保持します。この場合、バックアップ中のデータのみを次回の再試行時に再度バックアップする必要があります。br
処理がシステムによって中断された場合、br
外部storageにバックアップされたデータのメタ情報を保持できません。br
30 秒ごとにメタ情報を保持するため、中断前の最後の 30 秒間にバックアップされたデータは保持できず、次の再試行で再度バックアップする必要があります。
実装の詳細
スナップショット バックアップ中、 br
テーブルを対応するキー スペースにエンコードし、TiKV ノードに送信する前にバックアップ RPC 要求を生成します。バックアップ要求を受け取った後、TiKV ノードは要求された範囲内のデータをバックアップします。 TiKV ノードがリージョンのデータのバックアップを完了するたびに、この範囲のバックアップ情報をbr
に戻します。
br
、TiKV ノードによって返された情報を記録します。これはbr
バックアップされたキー範囲を取得するのに役立ちます。チェックポイント バックアップ機能は、バックアップされたキー範囲を保持できるように、定期的に新しいバックアップ情報を外部storageにアップロードします。
br
がバックアップを再試行すると、外部storageからバックアップされたキー範囲が読み取られ、バックアップ タスクのキー範囲と比較されます。差分データは、チェックポイント バックアップでバックアップする必要があるキー範囲を決定するのに役立ちbr
。