バックアップ

このステートメントは、TiDB クラスターの分散バックアップを実行するために使用されます。

BACKUPステートメントはBRツールと同じエンジンを使用しますが、バックアップ プロセスは別のBRツールではなく TiDB 自体によって実行されます。BR のすべての利点と警告は、このステートメントにも適用されます。

BACKUPを実行するには、 BACKUP_ADMINまたはSUPER権限が必要です。さらに、バックアップを実行する TiDB ノードとクラスター内のすべての TiKV ノードの両方に、宛先への読み取りまたは書き込み権限が必要です。9 Security強化モード有効になっている場合、ローカルstorage( local://で始まるstorageパス) は許可されません。

BACKUPステートメントは、バックアップ タスク全体が完了するか、失敗するか、キャンセルされるまでブロックされます。 BACKUPを実行するには、長時間持続する接続を準備する必要があります。 タスクは、 KILL TIDB QUERYステートメントを使用してキャンセルできます。

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

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

概要

BackupStmt
BACKUPBRIETablesTOstringLitBackupOption
BRIETables
DATABASE*DBName,TABLETableNameList
BackupOption
RATE_LIMIT=LengthNumMB/SECONDCONCURRENCY=LengthNumCHECKSUM=BooleanSEND_CREDENTIALS_TO_TIKV=BooleanLAST_BACKUP=BackupTSOSNAPSHOT=BackupTSOLengthNumTimestampUnitAGO
Boolean
NUMTRUEFALSE
BackupTSO
LengthNumstringLit

データベースをバックアップする

BACKUP DATABASE `test` TO 'local:///mnt/backup/2020/04/';
+------------------------------+-----------+-----------------+---------------------+---------------------+ | Destination | Size | BackupTS | Queue Time | Execution Time | +------------------------------+-----------+-----------------+---------------------+---------------------+ | local:///mnt/backup/2020/04/ | 248665063 | 416099531454472 | 2020-04-12 23:09:48 | 2020-04-12 23:09:48 | +------------------------------+-----------+-----------------+---------------------+---------------------+ 1 row in set (58.453 sec)

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

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

カラム説明
Destinationリンク先URL
Sizeバックアップアーカイブの合計サイズ(バイト単位)
BackupTSバックアップ作成時のスナップショットのTSO( 増分バックアップの場合に便利)
Queue TimeBACKUPタスクがキューに入れられたときのタイムスタンプ (現在のタイムゾーン)。
Execution TimeBACKUPタスクの実行が開始されたときのタイムスタンプ (現在のタイム ゾーン)。

テーブルのバックアップ

BACKUP TABLE `test`.`sbtest01` TO 'local:///mnt/backup/sbtest01/';
BACKUP TABLE sbtest02, sbtest03, sbtest04 TO 'local:///mnt/backup/sbtest/';

クラスター全体をバックアップする

BACKUP DATABASE * TO 'local:///mnt/backup/full/';

システム テーブル ( mysql.* PERFORMANCE_SCHEMA.* …) INFORMATION_SCHEMA.*バックアップに含まれないことに注意してください。

外部ストレージ

BR はS3 または GCS へのデータのバックアップをサポートしています。

BACKUP DATABASE `test` TO 's3://example-bucket-2020/backup-05/?access-key={YOUR_ACCESS_KEY}&secret-access-key={YOUR_SECRET_KEY}';

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

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

BACKUP DATABASE `test` TO 's3://example-bucket-2020/backup-05/' SEND_CREDENTIALS_TO_TIKV = FALSE;

パフォーマンスの微調整

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

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

テーブルとインデックスのバックアップのためにBRが実行できる同時タスクの数を指定するには、 CONCURRENCYパラメータを使用します。このパラメータはBR内のスレッド プール サイズを制御し、バックアップ操作のパフォーマンスと効率を最適化します。

1 つのタスクは、バックアップ スキーマに従って、1 つのテーブル範囲または 1 つのインデックス範囲を表します。1 つのインデックスを持つ 1 つのテーブルの場合、このテーブルをバックアップするために 2 つのタスクが使用されます。デフォルト値CONCURRENCY4です。多数のテーブルまたはインデックスをバックアップする必要がある場合は、値を増やします。

BACKUP DATABASE `test` TO 's3://example-bucket-2020/backup-06/' RATE_LIMIT = 120 MB/SECOND CONCURRENCY = 8 CHECKSUM = FALSE;

スナップショット

履歴データをバックアップするには、タイムスタンプ、TSO、または相対時間を指定します。

-- relative time BACKUP DATABASE `test` TO 'local:///mnt/backup/hist01' SNAPSHOT = 36 HOUR AGO; -- timestamp (in current time zone) BACKUP DATABASE `test` TO 'local:///mnt/backup/hist02' SNAPSHOT = '2020-04-01 12:00:00'; -- timestamp oracle BACKUP DATABASE `test` TO 'local:///mnt/backup/hist03' SNAPSHOT = 415685305958400;

相対時間でサポートされている単位は次のとおりです。

  • マイクロ秒
  • 2番
  • 時間

SQL 標準に従うと、単位は常に単数になることに注意してください。

増分バックアップ

最後のバックアップから現在のスナップショットまでの変更のみをバックアップするには、 LAST_BACKUPオプションを指定します。

-- timestamp (in current time zone) BACKUP DATABASE `test` TO 'local:///mnt/backup/hist02' LAST_BACKUP = '2020-04-01 12:00:00'; -- timestamp oracle BACKUP DATABASE `test` TO 'local:///mnt/backup/hist03' LAST_BACKUP = 415685305958400;

MySQL 互換性

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

参照

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