タイムスタンプへのフラッシュバック クラスタ

TiDB v6.4.0 ではFLASHBACK CLUSTER TO TIMESTAMP構文が導入されています。これを使用して、クラスターを特定の時点に復元できます。

ノート:

FLASHBACK CLUSTER TO TIMESTAMPの動作原理は、特定の時点の古いデータを最新のタイムスタンプで書き込むことであり、現在のデータは削除しません。したがって、この機能を使用する前に、古いデータと現在のデータ用の十分なstorage容量があることを確認する必要があります.

構文

FLASHBACK CLUSTER TO TIMESTAMP '2022-09-21 16:02:50';

あらすじ

FlashbackToTimestampStmt
FLASHBACKCLUSTERTOTIMESTAMPstringLit

ノート

  • FLASHBACKステートメントで指定された時間は、ガベージ コレクション (GC) の有効期間内である必要があります。システム変数tidb_gc_life_time (デフォルト: 10m0s ) は、以前のバージョンの行の保持時間を定義します。ガベージコレクションが実行された場所の現在のsafePointは、次のクエリで取得できます。

    SELECT * FROM mysql.tidb WHERE variable_name = 'tikv_gc_safe_point';
  • FLASHBACK CLUSTER SQL ステートメントを実行できるのは、 SUPER権限を持つユーザーだけです。

  • FLASHBACK文で指定した時刻からFLASHBACK文を実行する時刻までの間に、関連するテーブル構造を変更するDDL文があってはなりません。そのような DDL が存在する場合、TiDB はそれを拒否します。

  • FLASHBACK CLUSTER TO TIMESTAMPを実行する前に、TiDB は関連するすべての接続を切断し、 FLASHBACKステートメントが完了するまでこれらのテーブルに対する読み取りおよび書き込み操作を禁止します。

  • FLASHBACK CLUSTER TO TIMESTAMPステートメントは、実行後にキャンセルできません。 TiDB は成功するまで再試行を続けます。

次の例は、新しく挿入されたデータを復元する方法を示しています。

mysql> CREATE TABLE t(a INT); Query OK, 0 rows affected (0.09 sec) mysql> SELECT * FROM t; Empty set (0.01 sec) mysql> SELECT now(); +---------------------+ | now() | +---------------------+ | 2022-09-28 17:24:16 | +---------------------+ 1 row in set (0.02 sec) mysql> INSERT INTO t VALUES (1); Query OK, 1 row affected (0.02 sec) mysql> SELECT * FROM t; +------+ | a | +------+ | 1 | +------+ 1 row in set (0.01 sec) mysql> FLASHBACK CLUSTER TO TIMESTAMP '2022-09-28 17:24:16'; Query OK, 0 rows affected (0.20 sec) mysql> SELECT * FROM t; Empty set (0.00 sec)

FLASHBACKステートメントで指定された時刻からFLASHBACKステートメントが実行される時刻までにテーブル構造を変更する DDL ステートメントがある場合、 FLASHBACKステートメントは失敗します。

mysql> SELECT now(); +---------------------+ | now() | +---------------------+ | 2022-10-09 16:40:51 | +---------------------+ 1 row in set (0.01 sec) mysql> CREATE TABLE t(a int); Query OK, 0 rows affected (0.12 sec) mysql> FLASHBACK CLUSTER TO TIMESTAMP '2022-10-09 16:40:51'; ERROR 1105 (HY000): Detected schema change due to another DDL job during [2022-10-09 16:40:51 +0800 CST, now), can't do flashback

ログから、 FLASHBACKの実行進行状況を取得できます。次に例を示します。

[2022/10/09 17:25:59.316 +08:00] [INFO] [cluster.go:463] ["flashback cluster stats"] ["complete regions"=9] ["total regions"=10] []

MySQL の互換性

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

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

Playground
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Dedicated
TiDB Serverless
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2024 PingCAP. All Rights Reserved.
Privacy Policy.