Todos os produtos
Search
Central de documentação

AnalyticDB:Lixeira de tabelas

Última atualização: Jun 27, 2026

A lixeira de tabelas protege contra perda acidental de dados causada por instruções DROP TABLE. O sistema move as tabelas excluídas para um banco de dados oculto chamado ADB_RECYCLE_BIN e as retém por três dias, por padrão. Esse período permite recuperar os dados antes da exclusão definitiva.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Um cluster do AnalyticDB for MySQL com a versão V3.2.3.0 ou posterior

Nota

Para verificar a versão secundária de um cluster Data Lakehouse Edition, execute SELECT adb_version();. Para atualizar a versão secundária, entre em contato com o suporte técnico. Para clusters Data Warehouse Edition, consulte Atualizar a versão secundária de um cluster.

Limitações

  • Tipos de tabela compatíveis: apenas tabelas internas com engine XUANWU ou XUANWU_V2. Não há suporte para tabelas externas.

  • As tabelas na lixeira continuam a consumir espaço de armazenamento em disco.

  • A execução de DROP TABLE durante uma instrução INSERT OVERWRITE SELECT move a tabela para a lixeira e causa falha na instrução INSERT OVERWRITE SELECT.

  • A execução de DROP TABLE durante uma instrução BUILD move a tabela para a lixeira sem interromper a instrução BUILD.

  • Para executar qualquer instrução da lixeira (SHOW, RESTORE, PURGE), é necessária a permissão DROP na tabela de origem. Apenas as instruções PURGE, RESTORE e SHOW são compatíveis com tabelas na lixeira.

Como funciona

Na primeira execução de uma instrução DROP TABLE, o AnalyticDB for MySQL cria um banco de dados oculto chamado ADB_RECYCLE_BIN e move a tabela excluída para esse local. Instruções DROP TABLE subsequentes movem as tabelas para o mesmo banco de dados.

Importante

O comando DROP TABLE ... FORCE exclui a tabela permanentemente e ignora a lixeira.

Retenção e limpeza

Por padrão, as tabelas permanecem na lixeira por três dias (259.200.000 ms). Após o término do período de retenção, o AnalyticDB for MySQL as exclui automaticamente por meio de um thread de limpeza em segundo plano executado a cada 60 segundos. Você também pode executar a instrução PURGE para limpar manualmente a lixeira. Para mais informações, consulte a seção Excluir tabelas da lixeira.

Importante

Defina um período de retenção adequado para evitar o esgotamento do armazenamento em disco.

Convenção de nomenclatura

Tabelas de diferentes bancos de dados são armazenadas em uma única lixeira. Para garantir nomes exclusivos, o sistema renomeia cada tabela seguindo o formato NomeDoBancoDeDadosOrigem_NomeDaTabelaOrigem_Timestamp.

Exemplo: Uma tabela customer do banco de dados adb_demo, excluída em 1º de janeiro de 2024 às 00:00:00, recebe o nome adb_demo_customer_1704038400000.

Nota
  • Se o nome combinado exceder o comprimento máximo, o nome do banco de dados de origem e o nome da tabela serão truncados sequencialmente e poderão aparecer incompletos.

  • Caso a mesma tabela seja excluída novamente do mesmo banco de dados, ela será armazenada com um timestamp diferente.

Configurar a lixeira

Use SET ADB_CONFIG para configurar a lixeira.

Parâmetro

Padrão

Descrição

DROP_FORCE

FALSE

Defina como TRUE para excluir tabelas permanentemente ao executar DROP TABLE, ignorando a lixeira. Defina como FALSE para mover as tabelas para a lixeira.

RECYCLE_BIN_EXPIRED_TIME

259200000 (3 dias)

Período de retenção em milissegundos. Aplica-se apenas a tabelas excluídas após a alteração desta configuração. Tabelas já existentes na lixeira mantêm seu período de retenção original.

ENABLE_RECYCLE_BIN_CLEAN_EXPIRED_TABLE

TRUE

Ativa ou desativa o thread de limpeza em segundo plano. Não desative este recurso a menos que seja necessário para solução de problemas.

RECYCLE_BIN_CLEAN_EXPIRED_TABLE_INTERVAL

60000 (60 segundos)

Intervalo em milissegundos no qual o thread de limpeza é executado.

Alterar o período de retenção

SET adb_config RECYCLE_BIN_EXPIRED_TIME=<RetentionPeriodInMilliseconds>;
Importante

O novo período de retenção aplica-se apenas a tabelas excluídas após esta alteração. Tabelas que já estão na lixeira mantêm seu tempo de expiração original.

Exemplo: Definir o período de retenção para dois dias:

-- 2 days = 2 × 24 × 3600 × 1000 = 172,800,000 ms
SET adb_config RECYCLE_BIN_EXPIRED_TIME=172800000;

Consultar tabelas na lixeira

Sintaxe

-- 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>;

Exemplos

Listar todas as tabelas na lixeira:

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 uma tabela 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 as versões da tabela customer em todos os bancos de dados:

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 as tabelas do banco de dados 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 tabelas da lixeira

Regras de restauração

  • As tabelas restauradas recuperam seus nomes originais anteriores à exclusão.

  • Se o banco de dados de origem já contiver uma tabela com o mesmo nome, renomeie, exclua ou mova essa tabela existente antes de restaurar.

  • Quando existem múltiplas versões de uma tabela na lixeira (mesmo banco de dados e nome de tabela de origem, mas timestamps diferentes), o comando RESTORE RECYCLE_BIN ALL restaura a versão com o timestamp mais recente e reporta um erro para as versões restantes.

Sintaxe

-- 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>;

O <RecycleBinTableName> corresponde ao nome exibido na coluna tableName da saída do comando SHOW RECYCLE_BIN (formato: SourceDatabaseName_SourceTableName_Timestamp).

Restaurar uma versão específica de uma tabela

Quando houver várias versões de uma tabela excluída na lixeira, siga os passos abaixo para restaurar uma versão específica:

  1. Consulte a lixeira para encontrar todas as versões e seus respectivos nomes:

    SHOW RECYCLE_BIN TABLE <SourceTableName>;
  2. Identifique a versão desejada comparando a coluna recycledTime com o sufixo de timestamp em tableName.

  3. Restaure a versão específica utilizando seu nome na lixeira:

    RESTORE RECYCLE_BIN TABLE <RecycleBinTableName>;

Exemplo: Para restaurar a tabela customer conforme existia antes da exclusão em 2024-07-04 17:42:00:

RESTORE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;

Excluir tabelas da lixeira

Use o comando PURGE para excluir permanentemente tabelas da lixeira antes que elas expirem.

Sintaxe

-- 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>;

Exemplo

Excluir permanentemente a tabela adb_demo_customer_1720086117277:

PURGE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;