← PostgreSQL: operação e recuperação
12 / 12 · 70 MIN

Aceitar o restauro para operação

Verifica dados, permissões, escrita, constraints e estatísticas antes de declarar uma recuperação utilizável.

Comparar valores e invariantes

A primeira verificação lê ids, referências e unidades no destino e compara-os com o ponto exportado. Uma contagem de duas linhas seria compatível com valores errados ou referências trocadas; por isso, não basta como critério único. O laboratório confirma as linhas A=40 e B=60 antes de executar novas escritas de aceitação. Define quais invariantes importam no serviço: totais, relações, estados ou intervalos autorizados. Distingue dados recuperados de dados criados pelos testes posteriores, para que o próprio ensaio não pareça uma divergência. Em produção, a reconciliação funcional precisa de um responsável e de critérios acordados.

Testar o caminho runtime e o owner

Depois do restauro completo, a tabela pertence a deploy_owner e uma ligação real como runtime consegue ler o total 100. A mesma identidade insere uma nova referência com RETURNING id. Estas operações exercitam schema, tabela, sequência e leitura do identificador, indo além de uma consulta administrativa. Noutra base, --no-owner --no-acl recupera os mesmos valores, mas o owner passa a dr_lab e runtime recebe 42501. O contraste demonstra que portabilidade de dados e preservação de autorização são objetivos distintos. Se houver remapeamento intencional no destino, define os novos grants e volta a testar com as identidades previstas.

Preservar a semântica das sequências

Na origem, duas linhas têm ids 1 e 2. Uma chamada adicional a nextval e uma inserção posteriormente revertida avançaram a sequência até 4. O dump preserva esse estado; a primeira inserção runtime no destino recebe 5. Não é um erro de contagem nem uma linha desaparecida durante o restauro. Sequências podem ter lacunas e não funcionam como contadores transacionais sem falhas. Evita substituir o estado recuperado por max(id) sem analisar contratos externos, chamadas já efetuadas e risco de reutilização. O laboratório demonstra esta sequência controlada, sem concorrência nem garantia de ordenação temporal de transações de negócio.

Confirmar rejeições e integridade

Uma recuperação utilizável deve preservar também operações que não são permitidas. Após uma inserção válida, o ensaio tenta units negativo e uma referência A duplicada. As constraints restauradas rejeitam as operações com 23514 e 23505; a contagem permanece em três linhas. Regista o diagnóstico estruturado e confirma o estado, em vez de tratar qualquer mensagem de erro como êxito do teste negativo. Este conjunto não cobre todas as constraints, triggers ou funções possíveis de outra aplicação. A matriz real deve derivar do schema e dos invariantes do serviço, incluindo efeitos externos que um rollback SQL não consegue desfazer.

Distinguir estrutura e dados numa recuperação parcial

Numa terceira base de destino, --data-only falha porque ainda não existem os objetos da aplicação. O ensaio aplica então --schema-only, confirma que ledger existe vazia e aplica os dados do mesmo arquivo. Recupera duas linhas, total 100 e próximo valor de sequência 5. Esta ordem demonstra uma composição compatível específica; não prova que qualquer dump parcial seja independente. Se escolheres tabelas ou schemas, inventaria dependências e objetos auxiliares que o filtro pode excluir. Não mistures estrutura de uma versão com dados de outra sem validação explícita de colunas, constraints, tipos e transformações necessárias.

Fechar a aceitação com limites claros

Após a recuperação, ANALYZE atualiza informação usada pelo planeador; o ensaio confirma uma estimativa de duas linhas. Esse resultado não demonstra latência aceitável, throughput nem cumprimento de RTO. Para o serviço real, mede o percurso completo: obtenção do backup, preparação do destino, restauro, reconciliação, aplicação e decisão de retoma. Identifica também como satisfazer RPO se existirem alterações posteriores ao ponto recuperado. Aqui não se executaram PITR, crash, restore remoto, pool, carga ou workshop humano. O relatório deve guardar o que passou e transformar os pontos ainda não exercitados em trabalho de aceitação, sem apresentar o laboratório como recuperação de produção concluída.

# Target database and required roles already prepared in the owned lab.
pg_restore -h /owned/target/socket -U dr_lab -d restored --single-transaction original.dump
# Connect as runtime for application-path acceptance:
# SELECT id, ref, units FROM app.ledger ORDER BY id;
# INSERT INTO app.ledger(ref, units) VALUES ('recovered',7) RETURNING id;
# ANALYZE is performed by the administrator after recovery.
NA PRÁTICA

A tabela recuperada tem ids 1 e 2, mas a primeira inserção runtime devolve id 5 porque o estado da sequência foi preservado.

Armadilhas comuns

Aceitar apenas pela contagem; ignorar grants; reiniciar sequências por max(id); tratar ANALYZE como prova de SLA.

Tópicos relacionados: Recuperação lógica e dependências · Aceitação operacional e evidência

Leva esta ideia contigo

Recuperação utilizável exige verificar as operações que o serviço precisa, com limites e lacunas do ensaio registados.

Criar conta

Referência: Archive restoration and error handling · PostgreSQL 18 reference semantics;18.6 current stable at review

PostgreSQL® é uma marca registada de PostgreSQL Community Association. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por PostgreSQL Community Association. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.