TiDB ログのバックアップと PITR ガイド
完全バックアップ (スナップショット バックアップ) には、特定の時点での完全なクラスター データが含まれますが、TiDB ログ バックアップでは、アプリケーションによって書き込まれたデータを指定されたstorageにタイムリーにバックアップできます。必要に応じて復元ポイントを選択する場合、つまりポイント イン タイム リカバリ (PITR) を実行する場合は、 ログのバックアップを開始と完全バックアップを定期的に実行するを実行できます。
br コマンドライン ツール (以下br
と呼びます) を使用してデータをバックアップまたは復元する前に、まずインストールbr
実行する必要があります。
TiDB クラスターのバックアップ
ログのバックアップを開始
ノート:
- 次の例では、Amazon S3 アクセス キーとシークレット キーを使用してアクセス許可を承認することを前提としています。 IAMロールを使用してパーミッションを承認する場合は、
--send-credentials-to-tikv
からfalse
を設定する必要があります。- 他のstorageシステムまたは認証方法を使用してパーミッションを認証する場合は、 バックアップ ストレージに従ってパラメーター設定を調整します。
ログ バックアップを開始するには、 br log start
を実行します。クラスターは、毎回 1 つのログ バックアップ タスクしか実行できません。
tiup br log start --task-name=pitr --pd "${PD_IP}:2379" \
--storage 's3://backup-101/logbackup?access-key=${access-key}&secret-access-key=${secret-access-key}"'
ログ バックアップ タスクが開始されると、手動で停止するまで TiDB クラスターのバックグラウンドで実行されます。このプロセス中、TiDB の変更ログは指定されたstorageに小さなバッチで定期的にバックアップされます。ログ バックアップ タスクの状態を照会するには、次のコマンドを実行します。
tiup br log status --task-name=pitr --pd "${PD_IP}:2379"
期待される出力:
● Total 1 Tasks.
> #1 <
name: pitr
status: ● NORMAL
start: 2022-05-13 11:09:40.7 +0800
end: 2035-01-01 00:00:00 +0800
storage: s3://backup-101/log-backup
speed(est.): 0.00 ops/s
checkpoint[global]: 2022-05-13 11:31:47.2 +0800; gap=4m53s
完全バックアップを定期的に実行する
スナップショット バックアップは、フル バックアップの方法として使用できます。 br backup full
実行すると、固定スケジュール (たとえば、2 日ごと) に従ってクラスター スナップショットをバックアップstorageにバックアップできます。
tiup br backup full --pd "${PD_IP}:2379" \
--storage 's3://backup-101/snapshot-${date}?access-key=${access-key}&secret-access-key=${secret-access-key}"'
PITR を実行する
バックアップ保持期間内の任意の時点にクラスターを復元するには、 br restore point
を使用できます。このコマンドを実行するときは、復元する時点、その時点より前の最新のスナップショット バックアップ データ、およびログ バックアップ データを指定する必要があります。 BR は、復元に必要なデータを自動的に判別して読み取り、指定されたクラスターにこれらのデータを順番に復元します。
br restore point --pd "${PD_IP}:2379" \
--storage='s3://backup-101/logbackup?access-key=${access-key}&secret-access-key=${secret-access-key}"' \
--full-backup-storage='s3://backup-101/snapshot-${date}?access-key=${access-key}&secret-access-key=${secret-access-key}"' \
--restored-ts '2022-05-15 18:00:00+0800'
データの復元中は、ターミナルの進行状況バーで進行状況を確認できます。復元は、完全復元とログ復元 (メタ ファイルの復元と KV ファイルの復元) の 2 つのフェーズに分かれています。各フェーズが完了すると、 br
復元時間やデータ サイズなどの情報を出力します。
Full Restore <--------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
*** ["Full Restore success summary"] ****** [total-take=xxx.xxxs] [restore-data-size(after-compressed)=xxx.xxx] [Size=xxxx] [BackupTS={TS}] [total-kv=xxx] [total-kv-size=xxx] [average-speed=xxx]
Restore Meta Files <--------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
Restore KV Files <----------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
*** ["restore log success summary"] [total-take=xxx.xx] [restore-from={TS}] [restore-to={TS}] [total-kv-count=xxx] [total-size=xxx]
古いデータのクリーンアップ
TiDB バックアップと復元の使用概要で説明したように:
PITR を実行するには、復元ポイントの前に完全バックアップを復元し、完全バックアップ ポイントと復元ポイントの間にログ バックアップを復元する必要があります。したがって、バックアップ保持期間を超えるログ バックアップの場合は、 br log truncate
を使用して、指定した時点より前のバックアップを削除できます。完全なスナップショットの前に、ログ バックアップのみを削除することをお勧めします。
次の手順では、バックアップ保持期間を超えたバックアップ データをクリーンアップする方法について説明します。
バックアップ保持期間外の最後の完全バックアップを取得します。
validate
コマンドを使用して、バックアップに対応する時点を取得します。 2022/09/01 より前のバックアップ データをクリーンアップする必要があると仮定すると、この時点より前の最後の完全バックアップを探して、クリーンアップされないようにする必要があります。FULL_BACKUP_TS=`tiup br validate decode --field="end-version" --storage "s3://backup-101/snapshot-${date}?access-key=${access-key}&secret-access-key=${secret-access-key}"| tail -n1`スナップショット バックアップ
FULL_BACKUP_TS
より前のログ バックアップ データを削除します。tiup br log truncate --until=${FULL_BACKUP_TS} --storage='s3://backup-101/logbackup?access-key=${access-key}&secret-access-key=${secret-access-key}"'スナップショット バックアップより前のスナップショット データを削除します
FULL_BACKUP_TS
:rm -rf s3://backup-101/snapshot-${date}
PITRのパフォーマンスと影響
機能
- 各 TiKV ノードで、PITR は 280 GB/h の速度でスナップショット データを復元し、30 GB/h のログ データを復元できます。
- BR は、 600 GB/h の速度で古いログ バックアップ データを削除します。
ノート:
上記の仕様は、次の 2 つのテスト シナリオのテスト結果に基づいています。実際のデータは異なる場合があります。
- スナップショット データの復元速度 = スナップショット データのサイズ / (期間 * TiKV ノードの数)
- ログデータの復元速度 = 復元されたログデータのサイズ / (期間 * TiKV ノードの数)
テスト シナリオ 1 ( TiDB Cloudで):
- TiKV ノード数 (8 コア、16 GBメモリ): 21
- リージョン数: 183,000
- クラスターで作成された新しいログ データ: 10 GB/h
- 書き込み (INSERT/UPDATE/DELETE) QPS: 10,000
テスト シナリオ 2 (オンプレミス):
- TiKV ノード数 (8 コア、64 GBメモリ): 6
- リージョン数: 50,000
- クラスターで作成された新しいログ データ: 10 GB/h
- 書き込み (INSERT/UPDATE/DELETE) QPS: 10,000