Tenho um servidor PostgreSQL 9.1 em execução no sistema operacional CentOS 5.8 de 32 bits e ativei o arquivamento WAL. Nesse servidor, existem três bancos de dados: databaseA, databaseB e databaseC. Alguém exclui uma tabela às 12 horas no banco de dadosB e eu quero restaurar o banco de dadosB antes da hora em que a tabela foi excluída. Agora são 15:00.
Como posso restaurar o banco de dados B até as 12 horas sem perder três horas de dados nos outros dois bancos de dados?
postgresql.conf
wal_level = archive
archive_mode = on
archive_command = 'test ! -f /opt/pgsql/logs/%f && cp %p /opt/pgsql/logs/%f'
max_wal_senders = 100
recovery.conf
restore_command = 'cp /opt/pgsql/logs/%f %p'
recovery_target_time = '2012-06-29 11:59:59 CEST'
Executei meu backup básico às 9h
pg_basebackup -h 127.0.0.1 -D /opt/pgsql/backup
O serviço PostgreSQL foi encerrado às 15:00.
fonte
Para expandir a resposta do kgrittn, você também pode executar
pg_dump
apenas uma das tabelas que foram eliminadas e reconstruí-las no banco de dados existenteB, para não perder 6 horas de dados nas outras tabelas.fonte