La papelera de reciclaje de tablas protege contra la pérdida accidental de datos provocada por instrucciones DROP TABLE. Las tablas eliminadas se trasladan a una base de datos oculta llamada ADB_RECYCLE_BIN y se conservan durante tres días de forma predeterminada. Esto le da tiempo para recuperarlas antes de que se eliminen permanentemente.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un clúster de AnalyticDB for MySQL que ejecute la versión V3.2.3.0 o posterior.
Para actualizar la versión secundaria, póngase en contacto con el soporte técnico. En el caso de los clústeres Data Warehouse Edition, consulte Actualizar la versión secundaria de un clúster.
Límites
Tipos de tabla compatibles: únicamente tablas internas con el motor XUANWU o XUANWU_V2. Las tablas externas no son compatibles.
Las tablas en la papelera de reciclaje siguen consumiendo almacenamiento en disco.
Si ejecuta
DROP TABLEmientrasINSERT OVERWRITE SELECTestá en curso, la tabla se traslada a la papelera de reciclaje y la instrucciónINSERT OVERWRITE SELECTfalla.Si ejecuta
DROP TABLEmientrasBUILDestá en curso, la tabla se traslada a la papelera de reciclaje sin interrumpir la instrucciónBUILD.Para ejecutar cualquier instrucción de la papelera de reciclaje (SHOW, RESTORE, PURGE), debe tener el permiso
DROPsobre la tabla de origen. Solo se admiten las instrucciones PURGE, RESTORE y SHOW en las tablas de la papelera de reciclaje.
Funcionamiento
La primera vez que ejecuta una instrucción DROP TABLE, AnalyticDB for MySQL crea una base de datos oculta llamada ADB_RECYCLE_BIN y traslada ahí la tabla eliminada. Las instrucciones DROP TABLE posteriores trasladan las tablas a esa misma base de datos.
DROP TABLE ... FORCE elimina la tabla permanentemente y omite la papelera de reciclaje.
Periodo de retención y mecanismo de limpieza
Cuando una tabla entra en la papelera de reciclaje, se conserva durante tres días de forma predeterminada. Una vez que expira ese periodo, se elimina automáticamente. Puede personalizar el periodo de retención si configura RECYCLE_BIN_EXPIRED_TIME.
Limpieza automática al expirar el periodo de retención: las tablas de la papelera de reciclaje que superan el periodo de retención (RECYCLE_BIN_EXPIRED_TIME) se eliminan automáticamente.
-
Limpieza automática al alcanzar el límite de tablas: en las versiones V3.2.3.6, V3.2.4.3, V3.2.5.0 y posteriores, si el número de tablas ya alcanzó el límite máximo al momento de crear una nueva, el sistema elimina automáticamente la tabla de la papelera de reciclaje más próxima a expirar. Debe eliminarse una tabla antes de poder crear otra.
Nota¿Qué tabla elimina automáticamente la papelera de reciclaje?
Suponga que la papelera de reciclaje contiene una tabla que expira mañana y otra que expira pasado mañana. La tabla que expira mañana se elimina primero.
Limpieza manual: puede ejecutar manualmente
PURGEpara limpiar la papelera de reciclaje. Para obtener más información, consulte Delete tables from the recycle bin.
Convención de nombres
Las tablas de distintas bases de datos se almacenan en una sola papelera de reciclaje. Para garantizar que los nombres sean únicos, cada tabla se renombra con el formato SourceDatabaseName_SourceTableName_Timestamp.
Ejemplo: una tabla customer de la base de datos adb_demo, eliminada el 1 de enero de 2024 a las 00:00:00, se renombra como adb_demo_customer_1704038400000.
Si el nombre combinado supera la longitud máxima, el nombre de la base de datos de origen y el de la tabla se truncan en orden, por lo que podrían aparecer incompletos.
Si vuelve a eliminar una tabla con el mismo nombre desde la misma base de datos, esta se almacenará con una marca de tiempo distinta.
Configurar la papelera de reciclaje
Utilice SET ADB_CONFIG para configurar la papelera de reciclaje.
| Parámetro | Predeterminado | Descripción |
|---|---|---|
DROP_FORCE |
FALSE |
Establézcalo en TRUE para eliminar permanentemente las tablas con DROP TABLE, omitiendo la papelera de reciclaje. Establézcalo en FALSE para trasladar las tablas a la papelera de reciclaje. |
RECYCLE_BIN_EXPIRED_TIME |
259200000 (3 días) |
Periodo de retención en milisegundos. Se aplica únicamente a las tablas eliminadas después de modificar esta configuración. Las tablas que ya están en la papelera de reciclaje conservan su periodo de retención original. |
ENABLE_RECYCLE_BIN_CLEAN_EXPIRED_TABLE |
TRUE |
Habilite o deshabilite el hilo de limpieza en segundo plano. No lo deshabilite a menos que sea obligatorio para solucionar problemas. |
RECYCLE_BIN_CLEAN_EXPIRED_TABLE_INTERVAL |
60000 (60 segundos) |
Intervalo en milisegundos con el que se ejecuta el hilo de limpieza. |
RECYCLE_BIN_TABLE_COUNT_LIMIT_RATIO |
1.0 |
(V3.2.5.2 y posteriores) Proporción entre el número de tablas en la papelera de reciclaje y el límite total de tablas. Si la proporción supera este valor, el sistema limpia automáticamente las tablas agregadas más recientemente en la papelera de reciclaje. Para obtener más información, consulte Usage limits. Importante
El hilo de limpieza utiliza el menor de los umbrales calculados a partir de |
RECYCLE_BIN_TABLE_COUNT_LIMIT |
5000 |
(V3.2.5.2 y posteriores) Número máximo de tablas que se pueden almacenar en la papelera de reciclaje. Si se supera este valor, el sistema limpia automáticamente las tablas agregadas más recientemente. |
Cambiar el periodo de retención
SET adb_config RECYCLE_BIN_EXPIRED_TIME=<RetentionPeriodInMilliseconds>;
El nuevo periodo de retención se aplica únicamente a las tablas eliminadas después de este cambio. Las tablas que ya están en la papelera de reciclaje conservan su fecha de expiración original.
Ejemplo: establezca el periodo de retención en dos días:
-- 2 days = 2 × 24 × 3600 × 1000 = 172,800,000 ms
SET adb_config RECYCLE_BIN_EXPIRED_TIME=172800000;
Consultar tablas en la papelera de reciclaje
Sintaxis
-- List all tables in the recycle bin
SHOW RECYCLE_BIN ALL;
-- List tables from a specific source database and table name
SHOW RECYCLE_BIN TABLE <SourceDatabaseName>.<SourceTableName>;
-- List tables by source table name (across all databases)
SHOW RECYCLE_BIN TABLE <SourceTableName>;
-- List all tables from a specific source database
SHOW RECYCLE_BIN DATABASE <SourceDatabaseName>;
Ejemplos
Listar todas las tablas en la papelera de reciclaje:
SHOW RECYCLE_BIN ALL;
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| userName | schemaName | tableName | originSchemaName | originTableName | recycledTime | expiredTime |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| testUser | ADB_RECYCLE_BIN | adb_demo_customer_1720086117277 | adb_demo | customer | 2024-07-04 17:42:00 | 2024-07-07 17:42:00 |
| testUser | ADB_RECYCLE_BIN | adb_demo_orders_1720086094102 | adb_demo | orders | 2024-07-04 17:41:37 | 2024-07-07 17:41:37 |
| testUser | ADB_RECYCLE_BIN | testdb_customer_1720085752664 | testdb | customer | 2024-07-04 17:35:56 | 2024-07-07 17:35:56 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
Listar una tabla específica de adb_demo.customer:
SHOW RECYCLE_BIN TABLE adb_demo.customer;
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| userName | schemaName | tableName | originSchemaName | originTableName | recycledTime | expiredTime |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| testUser | ADB_RECYCLE_BIN | adb_demo_customer_1720086117277 | adb_demo | customer | 2024-07-04 17:42:00 | 2024-07-07 17:42:00 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
Listar todas las versiones de la tabla customer en todas las bases de datos:
SHOW RECYCLE_BIN TABLE customer;
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| userName | schemaName | tableName | originSchemaName | originTableName | recycledTime | expiredTime |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| testUser | ADB_RECYCLE_BIN | adb_demo_customer_1720086117277 | adb_demo | customer | 2024-07-04 17:42:00 | 2024-07-07 17:42:00 |
| testUser | ADB_RECYCLE_BIN | testdb_customer_1720085752664 | testdb | customer | 2024-07-04 17:35:56 | 2024-07-07 17:35:56 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
Listar todas las tablas de la base de datos adb_demo:
SHOW RECYCLE_BIN DATABASE adb_demo;
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| userName | schemaName | tableName | originSchemaName | originTableName | recycledTime | expiredTime |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| testUser | ADB_RECYCLE_BIN | adb_demo_customer_1720086117277 | adb_demo | customer | 2024-07-04 17:42:00 | 2024-07-07 17:42:00 |
| testUser | ADB_RECYCLE_BIN | adb_demo_orders_1720086094102 | adb_demo | orders | 2024-07-04 17:41:37 | 2024-07-07 17:41:37 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
Restaurar tablas desde la papelera de reciclaje
Reglas de restauración
Las tablas restauradas recuperan el nombre original que tenían antes de ser eliminadas.
Si la base de datos de origen ya contiene una tabla con el mismo nombre, cambie el nombre, elimine o traslade dicha tabla antes de restaurar.
Si existen varias versiones de una tabla en la papelera de reciclaje (misma base de datos de origen y mismo nombre de tabla, pero con marcas de tiempo distintas),
RESTORE RECYCLE_BIN ALLrestaura la versión con la marca de tiempo más reciente y reporta un error para las demás.
Sintaxis
-- Restore all tables to their source databases
RESTORE RECYCLE_BIN ALL;
-- Restore a specific table using its recycle bin name
RESTORE RECYCLE_BIN TABLE <RecycleBinTableName>;
El valor <RecycleBinTableName> es el nombre que aparece en la columna tableName del resultado de SHOW RECYCLE_BIN (formato: SourceDatabaseName_SourceTableName_Timestamp).
Restaurar una versión específica de una tabla
Cuando existen varias versiones de una tabla eliminada en la papelera de reciclaje, siga estos pasos para restaurar una versión específica:
-
Consulte la papelera de reciclaje para encontrar todas las versiones y sus nombres correspondientes:
SHOW RECYCLE_BIN TABLE <SourceTableName>; Identifique la versión de destino al comparar la columna
recycledTimecon el sufijo de marca de tiempo entableName.-
Restaure la versión específica mediante su nombre en la papelera de reciclaje:
RESTORE RECYCLE_BIN TABLE <RecycleBinTableName>;
Ejemplo: para restaurar la tabla customer tal como estaba antes de eliminarla el 2024-07-04 17:42:00:
RESTORE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;
Eliminar tablas de la papelera de reciclaje
Utilice PURGE para eliminar permanentemente tablas de la papelera de reciclaje antes de que expiren.
Sintaxis
-- Permanently delete all tables from the recycle bin
PURGE RECYCLE_BIN ALL;
-- Permanently delete a specific table from the recycle bin
PURGE RECYCLE_BIN TABLE <RecycleBinTableName>;
Ejemplo
Elimine permanentemente la tabla adb_demo_customer_1720086117277:
PURGE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;