Todos los productos
Search
Centro de documentos

PolarDB:Table recycle bin

Última actualización: Sep 05, 2026

Las instrucciones DDL como DROP TABLE y DROP DATABASE no admiten reversa. Por lo tanto, si elimina una tabla por accidente, los datos se pierden de forma permanente. La papelera de reciclaje de tablas intercepta estas operaciones y traslada las tablas eliminadas a un área segura. Así dispone de tiempo para recuperarlas antes de que se purguen definitivamente.

Importante

La papelera de reciclaje de tablas utiliza la capacidad de almacenamiento del clúster, lo cual genera cargos de almacenamiento. Establezca el periodo de retención según sus necesidades de recuperación para evitar costos innecesarios.

Requisitos previos

Antes de empezar, asegúrese de que su clúster ejecuta una de las siguientes versiones del motor. Para comprobar la versión, consulte Engine versions.

  • PolarDB for MySQL 8.0.1 con la versión de revisión 8.0.1.1.2 o posterior

  • PolarDB for MySQL 8.0.2 con la versión de revisión 8.0.2.1.0 o posterior

Funcionamiento

Cuando usted ejecuta DROP TABLE o DROP DATABASE, PolarDB intercepta la operación. En lugar de eliminar los objetos de la tabla de forma permanente, los traslada a la base de datos del sistema __recycle_bin__. Se aplica el siguiente comportamiento:

  • Los triggers y las claves externas se eliminan y no se envían a la papelera.

  • Las estadísticas de columnas se trasladan a la papelera junto con la tabla.

  • Los objetos no relacionados con la tabla eliminada no se envían a la papelera. Su conservación depende de la instrucción específica que se haya ejecutado.

Para evitar conflictos de nombres cuando se trasladan tablas de distintas bases de datos a la misma base de datos __recycle_bin__, PolarDB renombra cada tabla reciclada con el siguiente formato:

"__" + <storage engine name> + <SE private ID>

En InnoDB, el SE private ID corresponde al table_id. Por ejemplo, una tabla InnoDB reciclada podría llamarse __innodb_1063.

La purga se ejecuta automáticamente en segundo plano. Un hilo en segundo plano purga de forma asíncrona las tablas que superaron el periodo definido por loose_recycle_bin_retention. Para las tablas grandes, un hilo independiente se encarga de la purga y así evita bloquear otras operaciones.

Reciclaje independiente: los nodos primarios y los nodos de solo lectura mantienen papeleras separadas con periodos de retención independientes. Por ejemplo, puede establecer una retención de 7 días para el nodo primario y de 14 días para los nodos de solo lectura.

Consideraciones

  • Cuando se inicia un clúster de PolarDB, se inicializa una base de datos llamada __recycle_bin__

    que funciona como papelera de reciclaje. Esta es una base de datos del sistema, por lo que no es posible modificarla ni eliminarla.

  • No es posible ejecutar DROP TABLE directamente sobre las tablas de la papelera. Utilice call dbms_recycle.purge_table('table_name') para purgar una tabla específica de forma manual.

  • Para purgar tablas, su cuenta debe contar con el permiso DROP tanto en las tablas originales como en las tablas de la papelera.

  • Si la base de datos __recycle_bin__ y las tablas que desea reciclar están en sistemas de archivos distintos, DROP TABLE traslada los archivos entre tablespaces. Este proceso puede tomar bastante tiempo.

  • Si las tablas que desea reciclar están en un tablespace general que almacena varias tablas, solo se reciclan los datos de la tabla individual. Los archivos del tablespace no se trasladan.

Facturación

La papelera de reciclaje de tablas utiliza la capacidad de almacenamiento del clúster, lo cual genera cargos de almacenamiento. Para conocer los detalles de precios, consulte Reglas de facturación del almacenamiento.

Habilitar la papelera de reciclaje de tablas

Configure los siguientes parámetros para habilitar y ajustar la papelera de reciclaje de tablas.

Parámetro

Alcance

Valor predeterminado

Valores válidos

Descripción

loose_recycle_bin

Global y de sesión

OFF

ON, OFF

Habilita o deshabilita la papelera de reciclaje de tablas.

loose_recycle_scheduler

Global

OFF

ON, OFF

Habilita o deshabilita el hilo en segundo plano que purga automáticamente las tablas cuyo periodo de retención ya expiró. Si se establece en OFF, se ignora loose_recycle_bin_retention y los datos no se limpian automáticamente.

loose_recycle_bin_retention

Global

604800 (7 días)

86400–1209600 (segundos)

Periodo máximo de retención de los datos en la papelera. 604800 equivale a 7 días; 1209600 equivale a 14 días. Solo surte efecto cuando loose_recycle_scheduler está en ON.

Habilite tanto loose_recycle_bin como loose_recycle_scheduler para asegurar que las tablas se purguen automáticamente después del periodo de retención. Si no habilita la purga automática, los datos reciclados se acumulan y generan cargos continuos de almacenamiento.

Gestionar las tablas de la papelera de reciclaje

PolarDB proporciona tres procedimientos almacenados dentro de dbms_recycle para gestionar las tablas recicladas.

Listar las tablas de la papelera de reciclaje

Ejecute la siguiente instrucción para ver todas las tablas que se encuentran actualmente en la papelera:

call dbms_recycle.show_tables();

Salida de ejemplo:

+-----------------+---------------+---------------+--------------+---------------------+---------------------+
| 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)

A continuación se describen las columnas de la salida:

Columna

Descripción

SCHEMA

El esquema de la papelera de reciclaje (__recycle_bin__).

TABLE

El nombre nuevo de la tabla tal como aparece en la papelera.

ORIGIN_SCHEMA

El esquema original al que pertenecía la tabla antes de su eliminación.

ORIGIN_TABLE

El nombre original de la tabla.

RECYCLED_TIME

La hora en que la tabla se trasladó a la papelera.

PURGE_TIME

La hora estimada en la que la tabla se purgará automáticamente.

Restaurar una tabla desde la papelera de reciclaje

Ejecute la siguiente instrucción para restaurar una tabla reciclada hacia una base de datos y con un nombre de tabla específicos:

call dbms_recycle.restore_table('RECYCLE_TABLE', 'DEST_DB', 'DEST_TABLE');

Parámetro

Descripción

RECYCLE_TABLE

El nombre de la tabla en la papelera de reciclaje (por ejemplo, __innodb_1063). Si solo especifica este parámetro, se restauran los datos de la tabla original.

DEST_DB

La base de datos de destino.

DEST_TABLE

El nombre nuevo para la tabla restaurada.

Ejemplo: restaure __innodb_1063 en la base de datos testDB con el nombre testTable:

call dbms_recycle.restore_table('__innodb_1063', 'testDB', 'testTable');
restore_table solo es compatible con PolarDB for MySQL 8.0 Cluster Edition con la versión de revisión 8.0.1.1.12 o posterior. Para comprobar su versión, consulte Query the engine version . Su cuenta debe contar con los permisos ALTER_ACL y DROP_ACL en la base de datos __recycle_bin__ , además de los permisos CREATE_ACL e INSERT_ACL en la tabla de destino.

Purgar una tabla de la papelera de reciclaje

Ejecute la siguiente instrucción para eliminar de forma permanente una tabla específica de la papelera antes de que expire su periodo de retención:

call dbms_recycle.purge_table('TABLE_NAME');

TABLE_NAME es el nombre de la tabla tal como aparece en la papelera de reciclaje (no el nombre original de la tabla).

Ejemplo: elimine de forma permanente __innodb_1063:

call dbms_recycle.purge_table('__innodb_1063');
Su cuenta debe contar con el permiso DROP tanto en la tabla original como en la tabla de la papelera de reciclaje.

Pasos siguientes

Si tiene dudas sobre las operaciones DDL, contáctenos.