由于DDL语句无法回滚,如果误删除了表(例如DROP TABLE),可能会导致数据丢失。PolarDB提供了表回收站的功能,删除的表会被临时转移到表回收站,因此您可以从表回收站恢复误删的表。
背景信息
关于更多表回收站的信息,请参见表回收站。
前提条件
仅当集群版本为PolarDB MySQL版8.0版本,且内核小版本为8.0.1.1.2及以上时,才支持表回收站功能。
请确保误删除前已开启表回收站功能:设置集群参数loose_recycle_bin为ON,设置参数值的具体操作请参见设置集群参数和节点参数。
请确保误删表的时间点在表回收站内数据的最长保留周期内。可设置集群参数loose_recycle_bin_retention(单位:秒),来定义该最长保留周期,设置参数值的具体操作请参见设置集群参数和节点参数。
操作步骤
执行如下语句,查看回收站中所有临时保存的表。
CALL DBMS_RECYCLE.show_tables();
返回结果如下:
+-----------------+---------------+---------------+--------------+---------------------+---------------------+ | SCHEMA | TABLE | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME | PURGE_TIME | +-----------------+---------------+---------------+--------------+---------------------+---------------------+ | __recycle_bin__ | __innodb_1063 | product_db | t1 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | __recycle_bin__ | __innodb_1064 | product_db | t2 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | __recycle_bin__ | __innodb_1065 | product_db | parent | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | __recycle_bin__ | __innodb_1066 | product_db | child | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | +-----------------+---------------+---------------+--------------+---------------------+---------------------+ 4 rows in set (0.00 sec)
返回结果中的参数说明如下:
参数
说明
SCHEMA
回收站的Schema。
TABLE
进入回收站后的表名。
ORIGIN_SCHEMA
原始表的Schema。
ORIGIN_TABLE
原始表的表名。
RECYCLED_TIME
回收时间。
PURGE_TIME
预计在回收站中被清理的时间。
执行如下语句,快速恢复回收站内的某张表。
CALL DBMS_RECYCLE.restore_table('RECYCLE_TABLE','DEST_DB','DEST_TABLE');
说明PolarDB MySQL版8.0集群版的Revision version为8.0.1.1.12或以上才支持通过
restore_table
命令,快速恢复回收站内的表。您可以参见查询版本号确认集群版本。该语句中的参数说明如下:
参数
说明
RECYCLE_TABLE
需要恢复的表在回收站内的表名。
说明如果仅传入此参数,会恢复到原始表。
DEST_DB
为恢复后的表指定目标数据库。
DEST_TABLE
为恢复后的表指定新的表名。
示例:
CALL dbms_recycle.restore_table('__innodb_1063','testDB','testTable');
文档内容是否对您有帮助?