库表回收站

最近更新时间:2026-02-05 11:01:13

我的收藏

概述

TDSQL Boundless 回收站功能提供数据安全保障机制,当用户误删除表时,可以通过回收站快速恢复数据。系统通过一张数据字典表,存储被删除的数据库对象信息(包括数据库和表等信息),支持数据恢复操作。

工作原理

当启用回收站功能后,执行 DROP TABLE 操作时,系统会自动转换为RENAME TABLE db.t TO __tdsql__recycle_bin__.<RECYCLED_TABLE>,将被 DROP 的表移到__tdsql__recycle_bin__中。
恢复表时执行反向操作,执行RENAME TABLE __tdsql__recycle_bin__.<RECYCLED_TABLE> TO db.t,将被 DROP 的表恢复到原来的数据库中。

使用限制

不支持指定库恢复到任意时刻。
不支持库级别的回收和恢复。
不支持库的触发器、function、存储过程的回收与恢复。
不支持普通用户恢复表。
不支持单独回收索引或者恢复索引。
不支持分区表的某个子分区(含一级和二级)的回收与恢复。
不支持临时表。
不支持指定 Drop 表前的表名来执行 Flashback Query。

使用说明

当打开回收站功能后,用户删除的表默认被放入回收站中(也意味着数据空间并未释放),除非用户手动清除(PURGE)或者对象定期被数据库系统删除。

开启回收站功能

开启回收站
tdsql> SET PERSIST tdsql_recycle_bin_enabled=1;
关闭回收站
tdsql> SET PERSIST tdsql_recycle_bin_enabled=0;
说明:
回收站功能默认关闭,开启后删除的表会自动进入回收站。
tdsql_recycle_bin_enabled为全局变量。

查看回收站表信息

tdsql>SHOW RECYCLEBIN;
返回结果示例:
tdsql > SHOW RECYCLEBIN;
+-----------+---------------+--------------+--------------------------------+---------------------+---------------------+
| tindex_id | origin_schema | origin_table | recycle_table | drop_time | purge_time |
+-----------+---------------+--------------+--------------------------------+---------------------+---------------------+
| 53135 | sbtest | sbtest1_*** | bin$zxrh/bsnned9vygu4ioafg==$1 | 2026-01-14 16:19:54 | 2026-01-21 16:19:54 |
+-----------+---------------+--------------+--------------------------------+---------------------+---------------------+
1 row in set (0.01 sec)
字段说明
参数
说明
tindex_id
表对象 ID。
origin_schema
原数据库名。
origin_table
原表名。
recycle_table
回收站中的表名。
命名规则说明: 由于回收站需要集中管理来自不同数据库被删除的表,系统采用特定编码确保表名全局唯一。编码格式为:bin$base64(md5(__ + tdsql_ + {db_name} + {table_name}))${version},其中${version}为递增数值标记,用于区分同一表名的多次删除记录。
drop_time
删除时间。
purge_time
自动清理时间(默认7天后)。

恢复表

语法
FLASHBACK TABLE $recycle_table_name TO BEFORE DROP [RENAME TO $new_table_name];
按照指定的方式恢复表。如果有同名表,会报错。
可以指定:
$recycle_table: 表进入回收站后的别名。
$new_table_name:表恢复时的新命名。
说明:
权限要求: 需要具备原表的操作权限,或拥有管理员/超级用户权限。
使用示例
-- 恢复表并重命名
tdsql> FLASHBACK TABLE `bin$zxrh/bsnned9vygu4ioafg==$1` TO BEFORE DROP RENAME TO sbtest11;

直接删除表(不再转存入回收站库)

DROP TABLE $NAME PURGE;

清理回收站

清理特定表
PURGE RECYCLEBIN $recyele_table_name;
清空整个回收站
PURGE RECYCLEBIN;

相关参数

参数名
类型
默认值
说明
tdsql_recycle_bin_enabled
bool
0
是否开启回收站。
0(默认值):关闭。
1:开启
tdsql_recycle_bin_max_size
ulong
18446744073709551615
回收站最大对象数量限制。
tdsql_recycle_bin_drop_if_exceed_limit
ulong
1
超过限制时是否 DROP 表。
0:否。
1(默认值):是。
tdsql_recycle_bin_retention
ulong
604800
回收站对象保留时间(秒),默认7天,超过时间的表将被自动清理。