FLASHBACK DATABASE
可以使用系统变量 tidb_gc_life_time 配置数据的历史版本的保留时间(默认值是 10m0s
)。可以使用以下 SQL 语句查询当前的 safePoint
,即 GC 已经清理到的时间点:
只要一个数据库是在 tikv_gc_safe_point
时间之后被 DROP
,即可以用 语法来恢复。
FLASHBACK DATABASE DBName [TO newDBName]
FlashbackDatabaseStmt
FlashbackToNewName
如果数据库被删除的时间超过了 GC life time (
tikv_gc_safe_point
),就无法使用FLASHBACK DATABASE
语句来恢复被删除的数据了,否则会返回错误。错误类似于ERROR 1105 (HY000): Can't find dropped database 'test' in GC safe point 2022-11-06 16:10:10 +0800 CST
。在开启 TiDB Binlog 时,使用 需要注意以下情况:
- 从集群的 GC life time 一定要长于主集群的 GC life time。否则上下游同步存在的延迟可能也会造成下游恢复数据失败。
- 如果 TiDB Binlog 同步出错,则需要在 TiDB Binlog 中过滤掉该数据库,同时手动全量重新导入该数据库的数据。
恢复被
DROP
删除的test
数据库:DROP DATABASE test;