云数据库 TAURUSDB-TaurusDB表回收站:使用示例

时间:2025-01-10 14:24:38

使用示例

表回收站功能提供以下命令用于操作回收站中暂存的表。

  • 查看回收站中暂存的表

    call dbms_recyclebin.show_tables();

    返回结果格式如下:

    +----------------+--------------------------+---------------+--------------+---------------------+---------------------+
    | SCHEMA         | TABLE                    | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME       | PURGE_TIME          |
    +----------------+--------------------------+---------------+--------------+---------------------+---------------------+
    | __recyclebin__ | __innodb_test_db_t1_1069 | test_db       | t1           | 2024-09-29 08:48:27 | 2024-10-02 08:48:27 |
    | __recyclebin__ | __innodb_test_db_t2_1070 | test_db       | t2           | 2024-09-29 08:48:44 | 2024-10-02 08:48:44 |
    +----------------+--------------------------+---------------+--------------+---------------------+---------------------+
    表3 字段说明

    字段

    说明

    SCHEMA

    回收站中表的当前库名。

    TABLE

    回收站中表的当前表名。

    ORIGIN_SCHEMA

    移入回收站前的原库名。

    ORIGIN_TABLE

    移入回收站前的原表名。

    RECYCLED_TIME

    表被移入回收站的时间。

    PURGE_TIME

    预计表被自动清理的时间。

  • 恢复回收站中的表
    • 手动创建与原表表结构相同的新表后,通过INSERT INTO ... SELECT ...语句将表中数据恢复到新表

      示例:

      查询回收站中原库名为db,原表名为t1的表:

      call dbms_recyclebin.show_tables();

      返回结果格式如下:

      +----------------+--------------------------+---------------+--------------+---------------------+---------------------+
      | SCHEMA         | TABLE                    | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME       | PURGE_TIME          |
      +----------------+--------------------------+---------------+--------------+---------------------+---------------------+
      | __recyclebin__ | __innodb_test_db_t1_1069 | db            | t1           | 2024-09-29 08:48:27 | 2024-10-02 08:48:27 |
      | __recyclebin__ | __innodb_test_db_t2_1070 | db            | t2           | 2024-09-29 08:48:44 | 2024-10-02 08:48:44 |
      +----------------+--------------------------+---------------+--------------+---------------------+---------------------+

      通过以上查询结果,确定需要恢复的表在回收站中的当前表名为__innodb_test_db_t1_1069,执行INSERT INTO ... SELECT ...命令,将回收站中表__innodb_test_db_t1_1069的数据恢复到新创建的表t1中:

      INSERT INTO `db`.`t1` SELECT * FROM `__recyclebin__`.`__innodb_test_db_t1_1069`;

      通过INSERT INTO ... SELECT ...语句进行恢复不会移除回收站中暂存的数据,支持多次恢复,且生成的Binlog兼容性最佳。如实例存在基于Binlog的复制链路(如DRS 数据复制服务 、灾备实例),请避免使用call dbms_recyclebin.restore_table命令对回收站中的表进行恢复,建议使用INSERT INTO ... SELECT ...对数据进行恢复,降低由于目标端不支持表回收站功能、用户权限不足等原因导致复制中断的风险。

    • 恢复回收站中的表到原库原表

      call dbms_recyclebin.restore_table('TABLE_NAME');

      表4 参数说明

      参数名称

      说明

      TABLE_NAME

      回收站中表的当前表名。

      示例:

      将回收站中表__innodb_test_db_t1_1069恢复到原库test_db,并保留原表名t1。

      call dbms_recyclebin.restore_table('__innodb_test_db_t1_1069');

    • 恢复回收站中的表到指定库的指定表
      call dbms_recyclebin.restore_table('TABLE_NAME', 'DEST_DB', 'DEST_TABLE');
      表5 参数说明

      参数名称

      说明

      TABLE_NAME

      回收站中表的当前表名。

      DEST_DB

      指定表恢复到的数据库。

      DEST_TABLE

      指定表恢复后的表名。

      示例:

      将回收站中表__innodb_test_db_t1_1069恢复到指定库test_db2,并指定恢复后的表名为t3。

      call dbms_recyclebin.restore_table('__innodb_test_db_t1_1069','test_db2','t3');

      • 执行恢复操作前请确保目标库存在,否则恢复命令将执行失败。
      • 执行恢复操作前请确认目标库下不存在同名表,否则恢复将执行失败。
      • 表回收站相关命令指定的引号内的库名、表名前后不允许有多余空格。
  • 清理回收站中指定表

    call dbms_recyclebin.purge_table('TABLE_NAME');

    表6 参数说明

    参数名称

    说明

    TABLE_NAME

    回收站中表的当前表名。

    示例:

    手动清理回收站中表__innodb_test_db_t1_1069

    call dbms_recyclebin.purge_table('__innodb_test_db_t1_1069');

support.huaweicloud.com/kerneldesc-taurusdb/taurusdb_20_0057.html