Todos os produtos
Search
Central de documentação

MaxCompute:Backup local

Última atualização: Jul 08, 2026

O MaxCompute faz backup automático dos dados sempre que há modificações e retém esse backup por um período configurável. Caso ocorra exclusão ou sobrescrita acidental, restaure os dados para qualquer versão anterior dentro do período de retenção.

Backup and restoration

Como funciona

  • Sempre ativo -- Ativado por padrão com período de retenção de 24 horas. Não exige armazenamento externo nem gera custos adicionais.

  • Contínuo -- Cada modificação dispara um backup, garantindo que nenhuma alteração de dados seja perdida entre janelas agendadas.

  • Restauração rápida -- As operações de restauração não consomem recursos computacionais extras. Um único comando restaura uma tabela, partição ou versão específica.

Limitações

  • Não há suporte para materialized views, object tables e external tables.

  • Tabelas clusterizadas não podem ser restauradas.

  • Após a execução de PURGE TABLE em uma tabela, os dados purgados não podem ser restaurados.

  • Uma tabela ou partição excluída (incluindo Delta tables) não pode ser restaurada diretamente para um Log Sequence Number (LSN) específico. Restaure a tabela primeiro e depois restaure-a para o LSN desejado.

Limitações de Delta table

  • Uma Delta table ou partição excluída pode ser totalmente restaurada, mas não para uma minor version específica. Para consultar uma minor version específica, use o recurso de time travel.

  • Após a restauração de uma tabela excluída:

    • Consultar a tabela em um momento anterior à exclusão retorna dados como se a exclusão nunca tivesse ocorrido.

    • Consultar em um momento entre a exclusão e a restauração não retorna dados (o sistema trata como excluído).

    • Consultar em um momento posterior à restauração retorna dados como se nem a exclusão nem a restauração tivessem ocorrido. Os dados restaurados não são tratados como dados incrementais.

    • Consultar uma partição excluída antes de sua restauração não retorna resultados (igual a uma consulta normal em uma partição inexistente), em vez de gerar um erro.

  • Cada ciclo de exclusão e restauração gera novos timestamps de commit e números de versão. Ao restaurar uma tabela particionada, o sistema cria uma versão separada para cada partição.

Configurar o período de retenção

Defina o número de dias em que o MaxCompute retém os dados de backup. O intervalo válido é de 0 a 30. O valor padrão é 1 (24 horas). Definir como 0 desativa o backup.

-- Set the retention period to 7 days
setproject odps.timemachine.retention.days=7;
Apenas contas Alibaba Cloud ou administradores de projeto podem alterar o período de retenção.

Comportamento após a alteração do período de retenção:

Alteração

Efeito

Estender o período

Entra em vigor no mesmo dia

Reduzir o período

O MaxCompute exclui automaticamente os dados de backup que excedem o novo período

Para visualizar a configuração atual, execute setproject; no cliente MaxCompute (odpscmd) e verifique o valor de odps.timemachine.retention.days.

Visualizar histórico de backup

Listar todas as tabelas, incluindo as excluídas

SHOW HISTORY FOR tables;

Filtrar por nome:

SHOW HISTORY FOR tables LIKE test_restore_1;

Exemplo de saída:

Name                	Id                              	Type            	IsPartitioned 	CreateTime         	DropTime
test_restore_1      	a0b06367bd054d17a55505aa31601b89	MANAGED_TABLE   	FALSE         	2025-07-18 16:32:13
Requer a permissão List no projeto. Consulte Permissões do MaxCompute .

Visualizar histórico de versões de uma tabela

SHOW HISTORY FOR TABLE <table_name> [LIMIT <n>] [LSN '<lsn>' | OFFSET <offset>];

Exemplo:

SHOW HISTORY FOR TABLE test_restore_1;

Exemplo de saída:

ObjectType	ObjectId                        	ObjectName          	VERSION(LSN)    	Time               	Operation
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000001	2025-07-18 16:32:14	CREATE
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000002	2025-07-18 16:52:08	OVERWRITE
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000003	2025-07-18 16:52:12	OVERWRITE
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000004	2025-07-18 16:52:14	OVERWRITE
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000005	2025-07-18 16:52:17	OVERWRITE

Requer a permissão ShowHistory na tabela. Se a tabela tiver sido excluída, este comando retornará um erro. Use SHOW HISTORY FOR tables LIKE <table_name>; em vez disso.

Visualizar histórico de versões de uma tabela excluída

Use o ID da tabela obtido com SHOW HISTORY FOR tables:

SHOW HISTORY FOR TABLE test_restore_2 ('id'='437b29466ba948b392b2090ec0a60fc2');

Requer a permissão List no projeto.

Visualizar histórico de versões de uma partição

-- By partition spec
SHOW HISTORY FOR TABLE test_restore_part_1 PARTITION(ds='20250701');

-- By partition ID (for dropped partitions)
SHOW HISTORY FOR TABLE test_restore_part_1 PARTITION('id'='271aebf3e17a4a8e9f6b35733bf63db4');

Requer a permissão ShowHistory na tabela.

Para visualizar várias partições de uma vez:

SHOW HISTORY FOR TABLE test_restore_part_1 ('id'='fbee66b56cf544d2a9999d5d0ce5d352')
  PARTITION(ds='20250701') PARTITION(ds='20250702');

Restaurar uma tabela não particionada

Restaurar uma tabela excluída

RESTORE TABLE <table_name> ('id'='<table_id>');
O nome da tabela não deve entrar em conflito com uma tabela existente. Renomeie a tabela existente primeiro, se necessário.

Exemplo:

-- Rename the conflicting table
ALTER TABLE test_restore_2 RENAME TO test_restore_2_rename;

-- Restore the dropped table
RESTORE TABLE test_restore_2 ('id'='437b29466ba948b392b2090ec0a60fc2');

Permissões:

  • Tabela existente: permissão Update na tabela.

  • Tabela inexistente: permissão CreateTable no projeto.

Restaurar uma tabela para uma versão específica

RESTORE TABLE <table_name> TO LSN '<lsn>';

Exemplo:

RESTORE TABLE test_restore_1 TO LSN '0000000000000004';

SELECT * FROM test_restore_1;
-- Returns:
-- +------------+
-- | colname    |
-- +------------+
-- | 2          |
-- +------------+

Restaurar uma tabela para uma versão específica como uma nova tabela

RESTORE TABLE <table_name> TO LSN '<lsn>' AS <new_table_name>;

Este comando apresenta três comportamentos dependendo da tabela de destino:

Cenário

Comportamento

A tabela de destino não existe

Cria a nova tabela com os dados restaurados

A tabela de destino existe com o mesmo schema

Sobrescreve os dados da tabela de destino

A tabela de destino existe com um schema diferente

Falha com o erro ODPS-0110061

Exemplo -- restaurar e renomear:

RESTORE TABLE test_restore_2 TO LSN '0000000000000003' AS test_restore_new;

SELECT * FROM test_restore_new;
-- Returns:
-- +------------+
-- | colname    |
-- +------------+
-- | 1          |
-- +------------+

Restaurar uma tabela particionada

Restaurar uma tabela particionada excluída

RESTORE TABLE <table_name> ('id'='<table_id>');

Todas as partições que existiam no momento da exclusão são restauradas.

Restaurar partições excluídas

Restaure uma ou mais partições excluídas para uma tabela existente:

RESTORE TABLE <table_name> PARTITION('id'='<partition_id>') [PARTITION('id'='<partition_id>')];
A tabela deve existir. Se a tabela também foi excluída, restaure a tabela primeiro.

Exemplo:

-- View partition IDs
SHOW HISTORY FOR TABLE test_restore_part_y;

-- Restore two dropped partitions
RESTORE TABLE test_restore_part_y
  PARTITION('id'='a14d6cb4ab0c46378a6e284b257bbfaa')
  PARTITION('id'='8c85184ec0b44fba8198274401df2519');

Restaurar partições para uma versão específica

RESTORE TABLE <table_name>
  PARTITION(<partition_spec>) [PARTITION(<partition_spec>)]
  TO LSN '<lsn>';

Ao restaurar várias partições para um único LSN, cada partição é restaurada para o LSN especificado se esse LSN exato existir para a partição. Caso contrário, ela é restaurada para o LSN precedente mais próximo.

Exemplo: A partição pt1 possui os LSNs 100, 102, 104, 106. A partição pt2 possui os LSNs 101, 103, 104, 105. Restaurar ambas para o LSN 102 restaura pt1 para 102 e pt2 para 101.

RESTORE TABLE test_restore_part_y
  PARTITION(ds='20250701') PARTITION(ds='20250702')
  TO LSN '0000000000000010';

Restaurar partições para uma versão específica como uma nova tabela

RESTORE TABLE <table_name>
  PARTITION(<partition_spec>) [PARTITION(<partition_spec>)]
  TO LSN '<lsn>' AS <new_table_name>;

Exemplos de Delta table

Criar uma Delta table, inserir dados, excluir e restaurar

-- Create a Delta table
CREATE TABLE mf_dt (pk BIGINT NOT NULL PRIMARY KEY,
                    val BIGINT NOT NULL)
                    PARTITIONED BY (dd STRING, hh STRING)
                    TBLPROPERTIES ("transactional"="true");

-- Insert data
INSERT OVERWRITE TABLE mf_dt PARTITION(dd='01', hh='01')
  VALUES (1, 1), (2, 2), (3, 3);

INSERT INTO TABLE mf_dt PARTITION(dd='01', hh='01')
  VALUES (3, 30), (4, 4), (5, 5);

SELECT * FROM mf_dt WHERE dd='01' AND hh='01';
-- Returns:
-- +----+-----+----+----+
-- | pk | val | dd | hh |
-- +----+-----+----+----+
-- | 1  | 1   | 01 | 01 |
-- | 4  | 4   | 01 | 01 |
-- | 5  | 5   | 01 | 01 |
-- | 2  | 2   | 01 | 01 |
-- | 3  | 30  | 01 | 01 |
-- +----+-----+----+----+

Obter o ID da tabela para restauração

Execute DESC EXTENDED mf_dt; e localize o campo TableID na seção Extended Info:

TableID:  cd607cd938dc4ca6886dd12212995604

Excluir e restaurar a tabela

DROP TABLE mf_dt;

RESTORE TABLE mf_dt ('id' = 'cd607cd938dc4ca6886dd12212995604');

-- Verify the data
SELECT * FROM mf_dt WHERE dd='01' AND hh='01';
-- Returns the same data as before the drop.

Excluir e restaurar uma partição

-- Get partition IDs
SHOW HISTORY FOR TABLE mf_dt;

-- Drop the partition
ALTER TABLE mf_dt DROP PARTITION (dd = '01', hh = '01');

-- Restore the partition
RESTORE TABLE mf_dt PARTITION('id' = '51d38cc9ded344cf99188cd1a806e5d2');

-- Verify the data
SELECT * FROM mf_dt WHERE dd='01' AND hh='01';
-- Returns the same data as before the drop.

Time travel em uma tabela restaurada

Após restaurar uma Delta table, as consultas de time travel continuam funcionando:

-- Query a specific version
SELECT * FROM mf_dt version AS OF 2 WHERE dd = '01' AND hh = '01';
-- Returns:
-- +----+-----+----+----+
-- | pk | val | dd | hh |
-- +----+-----+----+----+
-- | 1  | 1   | 01 | 01 |
-- | 3  | 3   | 01 | 01 |
-- | 2  | 2   | 01 | 01 |
-- +----+-----+----+----+

-- Query the latest version
SELECT * FROM mf_dt version AS OF get_latest_version('mf_dt')
  WHERE dd = '01' AND hh = '01';
-- Returns the current data.

Limpeza de arquivos de dados (Delta tables)

As Delta tables retêm dados históricos dentro do período de time travel, o que gera custos adicionais de armazenamento. O sistema exclui automaticamente dados históricos desnecessários em até um dia quando todas as seguintes condições forem atendidas:

  • Os dados são anteriores ao período de time travel. (Se o time travel estiver desativado para a tabela, todos os dados históricos se qualificam.)

  • Os dados excederam o ciclo de vida ou foram excluídos, e também excederam o tempo de proteção de backup.

"Dados históricos" refere-se a arquivos de dados movidos para o diretório da lixeira. Operações como exceder o ciclo de vida, executar uma exclusão, rodar compactação ou realizar INSERT OVERWRITE movem arquivos de dados para a lixeira.

Forçar limpeza com PURGE

Em operações normais, permita que o sistema gerencie a limpeza automaticamente. Use PURGE TABLE apenas em emergências — por exemplo, quando excesso de arquivos causa instabilidade no disco ou quando dados históricos provocam picos inesperados de custo.

PURGE TABLE <table_name>;
Aviso

Após executar este comando, as consultas de time travel podem não retornar mais dados históricos.

Exemplo:

CREATE TABLE mf_ttt (pk BIGINT NOT NULL PRIMARY KEY,
                     val BIGINT NOT NULL)
                     TBLPROPERTIES ("transactional"="true");

INSERT INTO TABLE mf_ttt VALUES (1, 1), (2, 2);
INSERT INTO TABLE mf_ttt VALUES (2, 20), (3, 3);

-- Time travel returns version 2 data
SELECT * FROM mf_ttt version AS OF 2;
-- +----+-----+
-- | pk | val |
-- +----+-----+
-- | 1  | 1   |
-- | 2  | 2   |
-- +----+-----+

-- Run compaction, then time travel still works
ALTER TABLE mf_ttt compact major;
SELECT * FROM mf_ttt version AS OF 2;
-- Same result as above

-- After purge, time travel returns different data
PURGE TABLE mf_ttt;
SELECT * FROM mf_ttt version AS OF 2;
-- +----+-----+
-- | pk | val |
-- +----+-----+
-- | 1  | 1   |
-- | 3  | 3   |
-- | 2  | 20  |
-- +----+-----+

Referência de comandos

Cenário

Comando

Descrição

Configurar retenção

setproject odps.timemachine.retention.days=<days>;

Define o período de retenção (0--30 dias). Padrão: 1.

setproject;

Visualiza as configurações atuais do projeto, incluindo o período de retenção.

Visualizar histórico de backup

SHOW HISTORY FOR tables [LIKE <name>];

Lista todas as tabelas, incluindo as excluídas. Requer permissão List.

SHOW HISTORY FOR TABLE <name> [LIMIT <n>] [LSN '<lsn>' | OFFSET <n>];

Visualiza o histórico de versões de uma tabela. Requer permissão ShowHistory.

SHOW HISTORY FOR TABLE <name> ('id'='<id>');

Visualiza o histórico de versões de uma tabela excluída pelo seu ID. Requer permissão List.

SHOW HISTORY FOR TABLE <name> <partition_spec>;

Visualiza o histórico de versões de uma partição. Requer permissão ShowHistory.

SHOW HISTORY FOR TABLE <name> PARTITION('id'='<id>');

Visualiza o histórico de versões de uma partição excluída pelo seu ID.

Restaurar dados

RESTORE TABLE <name> ('id'='<id>');

Restaura uma tabela ou partição excluída.

RESTORE TABLE <name> TO LSN '<lsn>';

Restaura uma tabela para uma versão específica.

RESTORE TABLE <name> TO LSN '<lsn>' AS <new_name>;

Restaura uma tabela para uma versão e salva como uma nova tabela (ou existente).

RESTORE TABLE <name> PARTITION('id'='<id>') [...];

Restaura uma ou mais partições excluídas.

RESTORE TABLE <name> <partition_spec> [...] TO LSN '<lsn>';

Restaura partições para uma versão específica.

RESTORE TABLE <name> <partition_spec> [...] TO LSN '<lsn>' AS <new_name>;

Restaura partições para uma versão e salva como uma nova tabela.

Limpeza

PURGE TABLE <name>;

Força a exclusão de dados históricos na lixeira.

Observações de uso

  • Use a versão mais recente do cliente MaxCompute para acessar todos os comandos de backup e restauração.

  • As tabelas de backup são criadas apenas quando há modificação de dados. Sem modificação, não há entrada de backup.

  • Os dados de backup que excedem o período de retenção são excluídos automaticamente e não podem ser restaurados ou consultados.

  • Para obter informações sobre as permissões necessárias, consulte Permissões do MaxCompute.