バックアップ

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

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

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

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

BACKUPRESTOREのタスクは一度に 1 つだけ実行できます。 BACKUPまたはRESTOREステートメントが同じ TiDBサーバー上ですでに実行されている場合、新しい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.*INFORMATION_SCHEMA.*PERFORMANCE_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 ノードごとの平均アップロード速度が制限され、ネットワーク帯域幅が削減されます。

デフォルトでは、すべての TiKV ノードは 4 つのバックアップ スレッドを実行します。この値はCONCURRENCYオプションで調整できます。

バックアップが完了する前に、クラスター上のデータに対してチェックBACKUPを実行して、正確さを検証します。このステップが不要であると確信できる場合は、 CHECKSUMオプションを使用して無効にすることができます。

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 拡張機能です。

こちらも参照

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