Abrir uma loja restaurada ao lado da original

PostgreSQLBeginner
Pratique Agora

Introdução

A PAPER & FORM tem quatro pedidos, mas seu backup termina em R-103. Você precisa abrir esse estado anterior ao lado da loja original, examinar seus itens e comprovar que o serviço restaurado aceita um pedido de teste de forma independente.

Este laboratório começa separadamente. O banco original e backups/cutoff.dump estão preparados com o mesmo ponto de três pedidos do percurso anterior. É preciso saber o básico do terminal; conceitos de banco e conexão serão explicados novamente. Use Workstation para os comandos, Original Shop para o original e Restored Copy para o destino de teste.

Você pode restaurar e reiniciar somente o banco descartável shop_copy. Preserve origem, programa fornecido, backup e o arquivo sem relação em uploads/. Todos os dados são fictícios; não há pagamento nem e-mail. Dois bancos em uma instância de treinamento demonstram exportação lógica e isolamento, não recuperação completa de desastres, redundância física ou PITR.

Restaurar somente no destino independente vazio

Nesta etapa, você abrirá uma cópia funcional dos pedidos no ponto limite. Abra Original Shop, depois Orders. Há quatro registros, R-101 a R-104. R-103 tem dois Print pair de Rae, somando $36.00. R-104 pertence a Sol e foi adicionado depois do ponto salvo. Deve permanecer no original e ficar fora do arquivo restaurado.

Abra Restored Copy. Sua faixa cor de ferrugem indica shop_copy. A página inicial funciona, mas Orders explica que o banco independente está vazio. Uma resposta da página inicial não comprova uma loja restaurada.

Mude para Workstation. pwd imprime o diretório atual:

pwd
/home/labex/project/shop-backup

./shopctl identity lê as conexões reais. Os serviços salvos escolhem banco, host, porta e conta: shop-source conecta shop_source como o leitor d09_reader; shop-copy conecta shop_copy como o gravável d09_copy. Compartilham servidor em 127.0.0.1:5432, mas o papel da cópia não consegue conectar à origem:

./shopctl identity

pg_restore --list lê o arquivo personalizado sem escrever em um banco. Confira o nome da origem e as entradas orders e order_items:

pg_restore --list backups/cutoff.dump

Um banco guarda registros estruturados; os itens se relacionam ao pedido pai. Arquivos personalizados incluem definições, dados, sequências para novos identificadores e restrições que preservam as relações. São restaurados com pg_restore, não enviando o binário ao psql. Os clientes preparados de exportação e restauração usam PostgreSQL 14.

A ação empty mostra a identidade real do destino e recusa bancos com tabelas ou sequências do usuário. Um destino não vazio pode conter trabalho a preservar. Não use --clean nem --create: podem apagar objetos existentes ou usar o nome original da base arquivada.

No comando abaixo, && só executa a parte direita se a verificação de vazio passar. --dbname=service=shop-copy escolhe explicitamente o destino independente. --no-owner --no-privileges evita importar contas e concessões originais. --single-transaction trata a importação como uma unidade e desfaz uma falha. --exit-on-error para no primeiro erro do banco. Execute o comando protegido completo:

./shopctl empty && pg_restore --dbname=service=shop-copy --no-owner --no-privileges --single-transaction --exit-on-error backups/cutoff.dump

Espere a identidade do destino seguida de EMPTY: restore may proceed. Um pg_restore bem-sucedido normalmente não imprime nada. Se uma repetição mostrar REFUSED: target is not empty, o primeiro import pode ter funcionado. Examine a cópia antes de reiniciar qualquer coisa.

records copy lê as linhas reais relacionadas de pedidos e itens:

./shopctl records copy

Devem aparecer R-101, R-102 e R-103, total $98.00, sem R-104. Em Restored Copy, abra Orders, R-103 e seu recibo. Os dois Print pair e $36.00 precisam estar lá. Confira Original Shop: R-104 de Sol permanece e todos os pedidos somam $124.00.

Se usou um arquivo errado ou precisa tentar novamente após uma falha, reinicie só o destino descartável deste curso. O auxiliar mostra sua identidade e exige o nome exato. Este comando é uma recuperação opcional, não uma rotina após o sucesso:

./shopctl reset-copy shop_copy

Ele descarta apenas shop_copy. Repita depois a restauração protegida. Nunca reinicie ou apague o original nem use limpezas amplas de bancos. A verificação observa sua cópia real; não a restaura por você.

Comprovar que a cópia grava sem alterar o original

Nesta etapa, você testará uma gravação real na cópia. Uma exibição somente leitura pode parecer correta mesmo com sequências, relações ou conexão de escrita quebradas. Faça um pedido real de teste na cópia independente e compare as lojas. Permaneça em Restored Copy, abra Collection e vá ao formulário. Antes de enviar, leia Writing to: shop_copy · RESTORED COPY e a faixa cor de ferrugem. Não envie esse teste em Original Shop.

Use exatamente:

Campo Valor
Reference R-901
Name Copy test
Item Print pair
Quantity 1

Selecione Place order ↗. R-901 tem um item e total $18.00. Baixe o recibo e confirme shop_copy. O pedido usa a sequência restaurada e a relação de chave estrangeira; você não inseriu uma página pronta. Repetir a mesma referência retorna Already recorded em vez de criar um segundo pedido.

Abra Orders nessa mesma cópia. Deve conter R-101, R-102, R-103 e R-901, sem R-104. Em Original Shop, abra Orders. R-101 a R-104 continuam lá, sem R-901. Faixas diferentes não bastariam se os dois aplicativos gravassem no mesmo banco.

Em Workstation, exiba as duas identidades e leia os dados reais:

./shopctl identity
./shopctl records copy
./shopctl records source

A cópia soma $116.00; a origem continua em $124.00. Comparar todas as linhas como se devessem ser sempre iguais seria errado: R-104 pertence apenas à origem posterior, e R-901 só à cópia restaurada. Compare os registros compartilhados até o limite e a diferença permitida de cada lado.

O formulário original recusa R-901 sem gravar. Se escolheu a aba errada, leia Check the destination, mude para Restored Copy e envie ali. Referências desconhecidas também são recusadas; corrija o formulário e tente novamente. Se um R-901 existente tiver nome, item ou quantidade errados, ./shopctl correct copy R-901 mostra o destino real e corrige somente esse teste para Copy test / Print pair / 1. Os demais pedidos da cópia e todos os dados originais permanecem intactos. Se apenas a cópia descartável precisar de uma tentativa limpa, use exatamente a recuperação reset-copy shop_copy da etapa 1, restaure novamente e adicione o teste uma única vez.

A verificação final lê os bancos e sites ativos, preserva o upload sem relação e testa o arquivo em outro banco descartável. Não cria seu pedido de teste nem repara a cópia. Seu backup agora tem evidências de dados completos, limite claro e restauração independente gravável.

Resumo

Você identificou origem e destino reais, protegeu um destino vazio, restaurou um arquivo personalizado em uma transação e leu pedidos completos. O pedido novo exclusivo da cópia demonstrou um serviço independente e gravável, enquanto o original manteve o pedido posterior. Este exercício comprova um ensaio de restauração lógica, não toda uma estratégia de recuperação de produção.