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