TiDB 増分バックアップとリストアガイド
TiDBクラスターの増分データは、期間の開始スナップショットと終了スナップショット間の差分データ、およびこの期間に生成されたDDLです。完全(スナップショット)バックアップデータと比較して増分データはサイズが小さいため、スナップショットバックアップの補足として機能し、バックアップデータの容量を削減します。増分バックアップを実行するには、指定された期間内に生成されたMVCCデータがTiDB GCメカニズムによってガベージコレクションされないようにしてください。たとえば、1時間ごとに増分バックアップを実行するには、 tidb_gc_life_time 1時間より大きい値に設定する必要があります。
制限事項
増分バックアップの復元では、増分 DDL ステートメントをフィルター処理するためにバックアップ時点のデータベース テーブルのスナップショットを使用するため、増分バックアップ プロセス中に削除されたテーブルはデータの復元後も存在する可能性があり、手動で削除する必要があります。
増分バックアップでは、テーブル名の一括変更はサポートされていません。増分バックアップ中にテーブル名の一括変更が行われた場合、データの復元が失敗する可能性があります。テーブル名の一括変更後に完全バックアップを実行し、復元時に最新の完全バックアップを使用して増分データを置き換えることをお勧めします。
バージョン8.3.0以降、増分バックアップと後続のログバックアップの互換性を制御するための構成パラメータ--allow-pitr-from-incrementalが導入されました。デフォルト値はtrueで、増分バックアップと後続のログバックアップの互換性があることを意味します。
デフォルト値
trueままにしておくと、増分リストアを開始する前に、再生が必要なDDLが厳密にチェックされます。このモードでは、ADD INDEX、MODIFY COLUMN、REORG PARTITIONまだサポートされていません。増分バックアップとログバックアップを併用する場合は、増分バックアッププロセス中に、前述のDDLが存在しないことを確認してください。そうでない場合、これら3つのDDLを正しく再生できません。リカバリプロセス全体でログ バックアップなしで増分復元を使用する場合は、
--allow-pitr-from-incrementalからfalse設定して増分リカバリ フェーズでのチェックをスキップできます。
増分データをバックアップする
増分データをバックアップするには、 tiup br backupコマンドを、最終バックアップのタイムスタンプ--lastbackuptsを指定して実行します。これにより、br コマンドラインツールはlastbackuptsから現在時刻の間に生成された増分データを自動的にバックアップします。9 --lastbackupts取得するには、 validateコマンドを実行します。以下は例です。
LAST_BACKUP_TS=`tiup br validate decode --field="end-version" --storage "s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-access-key}"| tail -n1`
次のコマンドは、 (LAST_BACKUP_TS, current PD timestamp]とこの期間中に生成された DDL 間の増分データをバックアップします。
tiup br backup full --pd "${PD_IP}:2379" \
--storage "s3://backup-101/snapshot-202209081330/incr?access-key=${access-key}&secret-access-key=${secret-access-key}" \
--lastbackupts ${LAST_BACKUP_TS} \
--ratelimit 128
--lastbackupts: 最後のバックアップのタイムスタンプ。--ratelimit: バックアップ タスクを実行するTiKV あたりの最大速度 (MiB/秒)。storage: バックアップデータのstorageパス。増分バックアップデータは、前回のスナップショットバックアップとは異なるパスに保存する必要があります。上記の例では、増分バックアップデータはフルバックアップデータの下のincrディレクトリに保存されます。詳細は外部ストレージサービスのURI形式参照してください。
増分データを復元する
増分データをリストアする際は、 LAST_BACKUP_TSより前にバックアップされたすべてのデータがターゲットクラスターにリストアされていることを確認してください。また、増分リストアはデータを更新するため、リストア中に他の書き込みが行われていないことを確認する必要があります。そうしないと、競合が発生する可能性があります。
次のコマンドは、 backup-101/snapshot-202209081330ディレクトリに保存されている完全バックアップ データを復元します。
tiup br restore full --pd "${PD_IP}:2379" \
--storage "s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-access-key}"
次のコマンドは、 backup-101/snapshot-202209081330/incrディレクトリに保存されている増分バックアップ データを復元します。
tiup br restore full --pd "${PD_IP}:2379" \
--storage "s3://backup-101/snapshot-202209081330/incr?access-key=${access-key}&secret-access-key=${secret-access-key}"