Ich habe einen PostgreSQL 9.1-Server, der unter einem CentOS 5.8 32-Bit-Betriebssystem ausgeführt wird, und ich habe die WAL-Archivierung aktiviert. Auf diesem Server befinden sich drei Datenbanken: DatenbankA, DatenbankB und DatenbankC. Jemand löscht eine Tabelle um 12 Uhr in DatenbankB und ich möchte DatenbankB kurz vor dem Zeitpunkt wiederherstellen, zu dem die Tabelle gelöscht wurde. Es ist jetzt 15 Uhr.
Wie kann ich Datenbank B bis 12 Uhr wiederherstellen, ohne Daten in den beiden anderen Datenbanken im Wert von drei Stunden zu verlieren?
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'
Ich habe mein Basis-Backup um 9 Uhr ausgeführt
pg_basebackup -h 127.0.0.1 -D /opt/pgsql/backup
Der PostgreSQL-Dienst wurde um 15 Uhr heruntergefahren.
quelle
Um die Antwort von kgrittn zu erweitern, können Sie auch nur eine
pg_dump
der Tabellen erstellen, die gelöscht wurden, und sie in der vorhandenen Datenbank B neu erstellen , sodass Sie in den anderen Tabellen keine 6 Stunden Daten verlieren müssen.quelle