復元する

このステートメントは、 BACKUPステートメントによって以前に作成されたバックアップ アーカイブからの分散復元を実行します。

RESTOREステートメントはBRツールと同じエンジンを使用しますが、リストアプロセスは別のBRツールではなく TiDB 自体によって実行されます。BRの利点と注意事項はすべてここにも適用されます。特に、 RESTORE現在ACID準拠ではありませんRESTORE実行する前に、以下の要件が満たされていることを確認してください。

  • クラスターは「オフライン」であり、現在の TiDB セッションは復元中のすべてのテーブルにアクセスするための唯一のアクティブな SQL 接続です。
  • 完全な復元を実行する場合、既存のデータが上書きされ、データとインデックスの間に不整合が生じる可能性があるため、復元対象のテーブルがすでに存在していてはいけません。
  • 増分復元が実行されている場合、テーブルはバックアップが作成された時点のLAST_BACKUPのタイムスタンプとまったく同じ状態になっている必要があります。

RESTORE実行するには、 RESTORE_ADMINまたはSUPER権限が必要です。さらに、リストアを実行するTiDBノードとクラスター内のすべてのTiKVノードの両方に、リストア先からの読み取り権限が必要です。

RESTORE文はブロッキングであり、復元タスク全体が完了、失敗、またはキャンセルされた後にのみ終了します。3 RESTOREを実行するには、長時間持続する接続を用意する必要があります。タスクはKILL TIDB QUERY文を使用してキャンセルできます。

一度に実行できるタスクBACKUPRESTORE 1 つだけです。同じ TiDBサーバー上でタスク番号BACKUPまたはRESTORE既に実行されている場合、新しいタスクRESTORE実行は、前のタスクがすべて完了するまで待機します。

RESTORE 「tikv」storageエンジンでのみ使用できます。2 RESTORE 「unistore」エンジンで使用すると失敗します。

概要

RestoreStmt
RESTOREBRIETablesFROMstringLitRestoreOption
BRIETables
DATABASE*DBName,TABLETableNameList
RestoreOption
RATE_LIMIT=LengthNumMB/SECONDCONCURRENCY=LengthNumCHECKSUM=BooleanSEND_CREDENTIALS_TO_TIKV=Boolean
Boolean
NUMTRUEFALSE

バックアップアーカイブからの復元

RESTORE DATABASE * FROM 'local:///mnt/backup/2020/04/';
+------------------------------+-----------+----------+---------------------+---------------------+ | Destination | Size | BackupTS | Queue Time | Execution Time | +------------------------------+-----------+----------+---------------------+---------------------+ | local:///mnt/backup/2020/04/ | 248665063 | 0 | 2020-04-21 17:16:55 | 2020-04-21 17:16:55 | +------------------------------+-----------+----------+---------------------+---------------------+ 1 row in set (28.961 sec)

上記の例では、すべてのデータがローカルファイルシステムのバックアップアーカイブから復元されます。データは、すべてのTiDBノードとTiKVノードに分散された/mnt/backup/2020/04/ディレクトリからSSTファイルとして読み込まれます。

上記の結果の最初の行は次のように記述されます。

カラム説明
Destination読み取る先のURL
Sizeバックアップアーカイブの合計サイズ(バイト単位)
BackupTS(未使用)
Queue TimeRESTOREのタスクがキューに入れられたときのタイムスタンプ (現在のタイムゾーン)。
Execution TimeRESTOREタスクの実行が開始されたときのタイムスタンプ (現在のタイムゾーン)。

部分的な復元

復元するデータベースまたはテーブルを指定できます。バックアップアーカイブにデータベースまたはテーブルが欠落している場合、それらは無視され、 RESTOREもせずに完了します。

RESTORE DATABASE `test` FROM 'local:///mnt/backup/2020/04/';
RESTORE TABLE `test`.`sbtest01`, `test`.`sbtest02` FROM 'local:///mnt/backup/2020/04/';

外部ストレージ

BR はS3 または GCS からのデータの復元をサポートしています。

RESTORE DATABASE * FROM 's3://example-bucket-2020/backup-05/';

URL 構文については外部ストレージサービスのURI形式でさらに詳しく説明します。

資格情報を配布すべきでないクラウド環境で実行する場合は、 SEND_CREDENTIALS_TO_TIKVオプションをFALSEに設定します。

RESTORE DATABASE * FROM 's3://example-bucket-2020/backup-05/' SEND_CREDENTIALS_TO_TIKV = FALSE;

パフォーマンスの微調整

RATE_LIMIT使用すると、TiKV ノードあたりの平均ダウンロード速度が制限され、ネットワーク帯域幅が削減されます。

復元が完了する前に、 RESTOREバックアップファイルのデータに対してチェックサムを実行し、正確性を検証します。この検証が不要であると確信できる場合は、 CHECKSUMパラメータをFALSEに設定することでチェックを無効にすることができます。

RESTORE DATABASE * FROM 's3://example-bucket-2020/backup-06/' RATE_LIMIT = 120 MB/SECOND CONCURRENCY = 64 CHECKSUM = FALSE;

増分復元

増分リストアを実行するための特別な構文はありません。TiDBはバックアップアーカイブが完全か増分かを認識し、適切なアクションを実行します。各増分リストアを正しい順序で適用するだけで済みます。

たとえば、次のようにバックアップ タスクが作成されたとします。

BACKUP DATABASE `test` TO 's3://example-bucket/full-backup' SNAPSHOT = 413612900352000; BACKUP DATABASE `test` TO 's3://example-bucket/inc-backup-1' SNAPSHOT = 414971854848000 LAST_BACKUP = 413612900352000; BACKUP DATABASE `test` TO 's3://example-bucket/inc-backup-2' SNAPSHOT = 416353458585600 LAST_BACKUP = 414971854848000;

復元時にも同じ順序を適用する必要があります。

RESTORE DATABASE * FROM 's3://example-bucket/full-backup'; RESTORE DATABASE * FROM 's3://example-bucket/inc-backup-1'; RESTORE DATABASE * FROM 's3://example-bucket/inc-backup-2';

MySQLの互換性

このステートメントは、MySQL 構文に対する TiDB 拡張です。

参照

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