フラッシュバック データベース

TiDB v6.4.0 ではFLASHBACK DATABASE構文が導入されています。 FLASHBACK DATABASE使用して、ガベージ コレクション (GC) の有効期間内にDROPステートメントによって削除されたデータベースとそのデータを復元できます。

tidb_gc_life_timeシステム変数を構成することにより、履歴データの保持期間を設定できます。デフォルト値は10m0sです。次の SQL ステートメントを使用して、現在のsafePoint 、つまり GC が実行された時点までクエリを実行できます。

SELECT * FROM mysql.tidb WHERE variable_name = 'tikv_gc_safe_point';

tikv_gc_safe_point回の後にDROPでデータベースが削除されている限り、 FLASHBACK DATABASEを使用してデータベースを復元できます。

構文

FLASHBACK DATABASE DBName [TO newDBName]

あらすじ

FlashbackDatabaseStmt
FLASHBACKDatabaseSymDBNameFlashbackToNewName
FlashbackToNewName
TOIdentifier

ノート

  • データベースがtikv_gc_safe_point回より前に削除された場合、 FLASHBACK DATABASEステートメントを使用してデータを復元することはできません。 FLASHBACK DATABASEステートメントはERROR 1105 (HY000): Can't find dropped database 'test' in GC safe point 2022-11-06 16:10:10 +0800 CSTのようなエラーを返します。

  • FLASHBACK DATABASEステートメントを使用して同じデータベースを複数回復元することはできません。 FLASHBACK DATABASEで復元したデータベースは元のデータベースと同じスキーマ ID を持つため、同じデータベースを複数回復元するとスキーマ ID が重複します。 TiDB では、データベース スキーマ ID はグローバルに一意である必要があります。

  • TiDB Binlogが有効になっている場合、 FLASHBACK DATABASEを使用するときは次の点に注意してください。

    • ダウンストリーム セカンダリ データベースはFLASHBACK DATABASEをサポートする必要があります。
    • セカンダリ データベースの GC ライフ タイムは、プライマリ データベースの GC ライフ タイムよりも長くする必要があります。そうしないと、アップストリームとダウンストリームの間のレイテンシー、ダウンストリームでデータの復元が失敗する可能性があります。
    • TiDB Binlogレプリケーションでエラーが発生した場合は、TiDB Binlogでデータベースを除外してから、このデータベースの完全なデータを手動でインポートする必要があります。

  • DROPによって削除されたtestデータベースを復元します。

    DROP DATABASE test;
    FLASHBACK DATABASE test;
  • DROPによって削除されたtestデータベースを復元し、名前をtest1に変更します。

    DROP DATABASE test;
    FLASHBACK DATABASE test TO test1;

MySQL の互換性

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

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