📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

TiDBのバックアップと復元の概要



TiDBは、 Raftプロトコルと適切なデプロイメントトポロジーに基づいて、クラスタの高い可用性を実現しています。クラスタ内のノードがいくつか故障しても、クラスタは引き続き利用可能です。さらにデータの安全性を確保するため、TiDBは、自然災害や誤操作からデータを復旧するための最終手段として、バックアップ&リストア(BR)機能を提供しています。

BRは以下の要件を満たしています。

  • クラスターデータを最短5分のRPO(目標復旧時点)でディザスタリカバリ(DR)システムにバックアップすることで、災害発生時のデータ損失を軽減します。
  • アプリケーションの動作不良が発生した場合は、エラー発生前の時点までデータをロールバックすることで対処します。
  • 司法監督の要件を満たすために、履歴データの監査を実施する。
  • 本番環境を複製することで、トラブルシューティング、パフォーマンスチューニング、シミュレーションテストに便利になります。

使用する前に

このセクションでは、TiDB のバックアップとリストアを使用するための前提条件について説明します。これには、制限事項、使用上のヒント、互換性の問題が含まれます。BR ツールと他の機能またはバージョンとの互換性性の詳細については、 を参照してください。

制限

  • PITRは、空のクラスターへのデータ復元のみをサポートしています。
  • PITRは、システムテーブルからユーザーテーブルまたは権限テーブルのデータを復元することをサポートしていません。
  • BRは、クラスター上で複数のバックアップタスクを同時に実行することをサポートしていません。
  • 復元中のテーブルをバックアップすることは推奨されません。バックアップされたデータに問題が発生する可能性があるためです。
  • PITRを使用してクラスタを復元する場合、ログバックアップタスクを実行したり、TiCDCを使用してデータをダウンストリームクラスタにレプリケートしたりすることはできません。

いくつかのヒント

スナップショットバックアップ:

  • アプリケーションへの影響を最小限に抑えるため、バックアップ作業はピーク時以外の時間帯に行うことをお勧めします。
  • 複数のバックアップまたはリストアタスクは、一つずつ実行することをお勧めします。複数のバックアップタスクを並行して実行すると、パフォーマンスが低下します。さらに悪いことに、複数のタスク間の連携が不足すると、タスクの失敗やクラスタのパフォーマンス低下につながる可能性があります。

スナップショット復元:

  • BRはターゲットクラスターのリソースを最大限に活用します。そのため、新しいクラスターまたはオフラインのクラスターにデータを復元することをお勧めします。本番のクラスターにデータを復元することは避けてください。そうしないと、アプリケーションに必ず影響が出ます。

バックアップstorageとネットワーク構成:

  • バックアップデータは、Amazon S3、GCS、またはAzure Blob Storageと互換性のあるstorageシステムに保存することをお勧めします。
  • BR、TiKV、およびバックアップstorageシステムに十分なネットワーク帯域幅があり、バックアップstorageシステムが十分な読み取り/書き込み性能(IOPS)を提供できることを確認する必要があります。そうでない場合、バックアップおよびリストア時にパフォーマンスのボトルネックになる可能性があります。

バックアップと復元を使用する

BRの使用方法は、TiDBの導入方法によって異なります。このドキュメントでは、オンプレミス環境において、brコマンドラインツールを使用してTiDBクラスタデータをバックアップおよび復元する方法について説明します。

他の導入シナリオでこの機能を使用する方法については、以下のドキュメントを参照してください。

BR機能

TiDB BRは以下の機能を提供します。

  • クラスタデータのバックアップ: 特定の時点におけるクラスタの完全なデータ (フルバックアップ) をバックアップすることも、TiDB のデータ変更 (ログバックアップ、ここでログとは TiKV の KV の変更を意味します) をバックアップすることもできます。

  • バックアップデータを復元する:

    • 完全バックアップを復元することも、完全バックアップ内の特定のデータベースやテーブルを復元することもできます。
    • バックアップデータ(フルバックアップとログバックアップ)に基づいて、対象クラスターをバックアップクラスターの任意の時点に復元できます。このタイプの復元は、ポイントインタイムリカバリ(略してPITR)と呼ばれます。

クラスターデータのバックアップ

フルバックアップは、特定の時点におけるクラスタのすべてのデータをバックアップします。TiDBは、以下のフルバックアップ方法をサポートしています。

  • クラスターのスナップショットをバックアップする: TiDB クラスターのスナップショットには、特定の時点でのトランザクション的に一貫したデータが含まれています。詳細については、 スナップショットバックアップを参照してください。

フルバックアップは多くのstorage容量を消費し、特定の時点のクラスタデータのみを含みます。必要に応じて復元ポイントを選択する、つまりポイントインタイムリカバリ(PITR)を実行する場合は、以下の2つのバックアップ方法を同時に使用できます。

  • ログバックアップバックアップが開始されると、タスクはすべてのTiKVノードで実行され続け、TiDBの増分データを定期的に小バッチで指定されたstorageにバックアップします。
  • 定期的にスナップショットバックアップを実行してください。クラスタ全体のデータをバックアップstorageにバックアップします。例えば、毎日午前0時にクラスタのスナップショットバックアップを実行します。

バックアップのパフォーマンスとTiDBクラスタへの影響

  • クラスタのCPUとI/Oリソースが十分な場合、スナップショットバックアップがTiDBクラスタに与える影響は限定的で、通常は20%未満に抑えられます。TiDBクラスタを適切に構成することで、この影響をさらに10%以下にまで最小限に抑えることができます。CPUとI/Oリソースが不足している場合は、TiKV構成項目backup.num-threadsを調整して、バックアップタスクで使用されるワーカースレッド数を変更し、バックアップタスクがTiDBクラスタに与える影響を軽減できます。TiKVノードのバックアップ速度はスケーラブルで、50MB/秒から100MB/秒の範囲です。詳細については、 とバックアップのパフォーマンスと影響参照してください。
  • ログバックアップタスクのみの場合、クラスタへの影響は約5%です。ログバックアップは、3~5分ごとに最後の更新後に生成されたすべての変更をバックアップstorageにフラッシュするため、最短5分のリカバリポイント目標(RPO)を実現できます

バックアップデータを復元する

バックアップ機能に対応して、完全復元とPITRの2種類の復元を実行できます。

  • フルバックアップを復元する

  • 任意の時点へのデータ復元(PITR)

    • br restore pointコマンドを実行すると、リカバリ時点より前の最新のスナップショットバックアップデータを復元し、指​​定した時点までのバックアップデータをログに記録できます。BRは復元範囲を自動的に判断し、バックアップデータにアクセスして、ターゲットクラスタにデータを復元します。

TiDBクラスターのパフォーマンスと影響を回復する

バックアップstorage

TiDBは、Amazon S3、Google Cloud Storage(GCS)、Azure Blob Storage、NFS、およびその他のS3互換ファイルstorageサービスへのデータバックアップをサポートしています。詳細については、以下のドキュメントを参照してください。

互換性

他の機能との互換性

TiDBの一部の機能が有効化または無効化されている場合、バックアップと復元が正常に動作しない可能性があります。バックアップおよび復元時にこれらの機能が一貫して有効化または無効化されていない場合、互換性の問題が発生する可能性があります。

特徴問題解決
GBK文字セットv5.4.0より前のバージョンのBRはcharset=GBKテーブルの復元をサポートしていません。また、v5.4.0より前のTiDBクラスタへのcharset=GBKテーブルのリカバリをサポートするBRのバージョンもありません。
クラスター化インデックス#565リストア時にグローバル変数tidb_enable_clustered_indexの値がバックアップ時の値と一致していることを確認してください。一致しない場合、 default not foundエラーやデータインデックスの不整合など、データの不整合が発生する可能性があります。
新しい照合順序#352復元中のnew_collation_enabledテーブル内のmysql.tidb変数の値がバックアップ中の値と一致していることを確認してください。そうしないと、データ インデックスの不整合が発生し、チェックサムが失敗する可能性があります。詳細については、 FAQ - BRがnew_collations_enabled_on_first_bootstrap不一致を報告するのはなぜですか?参照してください。
グローバル一時テーブルデータのバックアップと復元には、 BRのバージョン5.3.0以降を使用していることを確認してください。そうでない場合、バックアップ対象のグローバル一時テーブルの定義でエラーが発生します。
TiDB Lightning物理インポートアップストリーム データベースがTiDB Lightningの物理インポート モードを使用している場合、ログ バックアップでデータをバックアップできません。データのインポート後に完全バックアップを実行することをお勧めします。詳細については、 上流データベースがTiDB Lightningを使用して物理インポートモードでデータをインポートすると、ログバックアップ機能が利用できなくなります。なぜでしょうか?参照してください。
TiCDCBR v8.2.0 以降: リストア対象のクラスターにチェンジフィードがあり、チェンジフィードのCheckpointTSが BackupTS より前の場合、 BR はリストアを実行しません。 BRバージョン v8.2.0 より前: リストア対象のクラスターにアクティブな TiCDC チェンジフィードがある場合、 BR はリストアを実行しません。
ベクトル検索データのバックアップと復元には、 BR v8.4.0 以降のバージョンを使用していることを確認してください。テーブルを で復元することは ベクトルデータ型v8.4.0 より前の TiDB クラスタではサポートされていません。

バージョン互換性

注記:

バックアップおよび復元には、TiDBクラスタと同じメジャーバージョンのBRを使用することをお勧めします。

バックアップとリストアを実行する前に、 BR はTiDB クラスタのバージョンを自身のバージョンと比較し、互換性を確認します。バージョンに互換性がない場合、 BR はエラーを報告して終了します。バージョンチェックを強制的にスキップするには、 --check-requirements=falseを設定します。バージョンチェックをスキップすると、データに互換性の問題が生じる可能性があることに注意してください。

バージョン 7.0.0 以降、TiDB は SQL ステートメントによるバックアップおよびリストア操作を段階的にサポートしています。そのため、クラスタ データのバックアップおよびリストアを行う際には、TiDB クラスタと同じメジャー バージョンのBRツールを使用することを強く推奨します。また、メジャー バージョンをまたいでのデータ バックアップおよびリストア操作は避けてください。これにより、リストア操作のスムーズな実行とデータの一貫性が確保されます。バージョン 7.6.0 以降、 BR はデフォルトで一部のmysqlシステム テーブルにデータをリストアします。つまり、 --with-sys-tableオプションはデフォルトでtrueに設定されます。異なるバージョンの TiDB クラスタにデータを復元する際に、システム テーブルのスキーマが異なるために[BR:Restore:ErrRestoreIncompatibleSys]incompatible system tableと同様のエラーが発生した場合は、 --with-sys-table=falseを設定してシステム テーブルの復元をスキップし、このエラーを回避できます。

TiDB v6.6.0以前のBRバージョン互換性マトリックス

TiDB v6.6.0より前のBRの互換性情報は以下のとおりです。

バックアップバージョン(縦軸)/復元バージョン(横軸)TiDB v6.0に復元するTiDB v6.1に復元するTiDB v6.2に復元するTiDB v6.3、v6.4、またはv6.5に復元してください。TiDB v6.6に復元する
TiDB v6.0、v6.1、v6.2、v6.3、v6.4、または v6.5 スナップショット バックアップ互換性あり(既知の問題#36379 :バックアップデータに空のスキーマが含まれている場合、 BR がエラーを報告する可能性があります。)互換性がある互換性がある互換性がある互換性あり(BRはv6.6である必要があります)
TiDB v6.3、v6.4、v6.5、またはv6.6のログバックアップ互換性がない互換性がない互換性がない互換性がある互換性がある

TiDB v6.5.0とv8.5.0間のBRバージョン互換性マトリックス

このセクションでは、TiDB v6.5.0からv8.5.0までのすべての長期サポート(LTS)バージョン(v6.5.0、v7.1.0、v7.5.0、v8.1.0、v8.5.0を含む)のBR互換性情報について説明します。

注記:

  • 既知の問題:v7.2.0以降、新規作成されたクラスタの一部のシステムテーブルフィールドは、大文字と小文字を区別しなくなります。ただし、v7.2.0より前のバージョンからv7.2.0以降にオンラインでアップグレードされたクラスタの場合、対応するシステムテーブルフィールドは引き続き大文字と小文字を区別します。これら2種類のクラスタ間でシステムテーブルを含むバックアップおよびリストア操作を行うと、失敗する可能性があります。詳細については、 問題番号43717を参照してください。
  • バージョン8.5.5以降、 BRは--sys-check-collationパラメータを使用してシステムテーブルを復元する際に、照合順序の互換性チェックをサポートするようになりました。復元中、 BRはターゲットクラスタ照合順序で大文字小文字の競合が存在するかどうかを確認します。データがターゲット照合順序と互換性がある場合、 BRは以前のバージョンからのバックアップを正常に復元できます。そうでない場合、 BRはエラーを報告して復元を終了します。

以下の表は、フルバックアップの互換性マトリックスを示しています。なお、表の情報はすべて新規作成されたクラスターに適用されます。v7.2.0より前のバージョンからv7.2.0以降にアップグレードされたクラスターについては、v7.1.0のバックアップと同様の動作となります。

バックアップバージョン互換性のある復元バージョン互換性のない復元バージョン
v6.5.0v7.1.0バージョン7.5.0以降
v7.1.0-バージョン7.5.0以降
v7.5.0バージョン7.5.0以降-
v8.1.0バージョン8.1.0以降-
v8.5.0バージョン8.5.0以降-

以下の表は、ログバックアップの互換性マトリックスを示しています。なお、表の情報はすべて新規作成されたクラスタに適用されます。v7.2.0より前のバージョンからv7.2.0以降にアップグレードされたクラスタについては、v7.1.0のバックアップと同様の動作となります。

バックアップバージョン互換性のある復元バージョン互換性のない復元バージョン
v6.5.0v7.1.0バージョン7.5.0以降
v7.1.0-バージョン7.5.0以降
v7.5.0バージョン7.5.0以降-
v8.1.0バージョン8.1.0以降-
v8.5.0バージョン8.5.0以降-

注記:

  • システムテーブル以外のデータのみがバックアップされる場合(フルバックアップまたはログバックアップ)、すべてのバージョンは互換性があります。
  • mysqlシステム テーブルの復元が互換性のないシナリオでは、 --with-sys-table=falseを設定してすべてのシステム テーブルの復元をスキップするか、より細かいフィルターを使用して互換性のないシステム テーブルのみをスキップすることで問題を解決できます。たとえば、 --filter '*.*' --filter "__TiDB_BR_Temporary_*.*" --filter '!mysql.*' --filter 'mysql.bind_info' --filter 'mysql.user' --filter 'mysql.global_priv' --filter 'mysql.global_grants' --filter 'mysql.default_roles' --filter 'mysql.role_edges' --filter '!sys.*' --filter '!INFORMATION_SCHEMA.*' --filter '!PERFORMANCE_SCHEMA.*' --filter '!METRICS_SCHEMA.*' --filter '!INSPECTION_SCHEMA.*'などです。
  • -該当するシナリオに互換性の制限がないことを意味します。

関連項目

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