Tengo un servidor PostgreSQL 9.1 que se ejecuta en un sistema operativo CentOS 5.8 de 32 bits y he habilitado el archivo WAL. En este servidor, hay tres bases de datos: databaseA, databaseB y databaseC. Alguien elimina una tabla a las 12 pm en la base de datos B y quiero restaurar la base de datos B justo antes de la hora en que se eliminó la tabla. Ahora son las 3 pm.
¿Cómo puedo restaurar la base de datos B hasta las 12 p. M. Sin perder tres horas de datos en las otras dos bases de datos?
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'
Ejecuté mi copia de seguridad base a las 9 a.m.
pg_basebackup -h 127.0.0.1 -D /opt/pgsql/backup
El servicio PostgreSQL se cerró a las 3 pm.
fuente
Para ampliar la respuesta de kgrittn, también puede hacer una
pg_dump
de solo la tabla que se descartó y reconstruirla en la base de datos B existente, por lo que no necesita perder 6 horas de datos en las otras tablas.fuente