Mam serwer PostgreSQL 9.1 działający na 32-bitowym systemie operacyjnym CentOS 5.8 i włączyłem archiwizację WAL. Na tym serwerze są trzy bazy danych: baza danych A, baza danych B i baza danych C. Ktoś usuwa tabelę o 12 po południu w bazie danych B i chcę przywrócić bazę danych B tuż przed momentem usunięcia tabeli. Czas jest teraz 3 po południu.
Jak mogę przywrócić bazę danychB do 12 po południu bez utraty danych z trzech godzin w pozostałych dwóch bazach danych?
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'
Kopię zapasową bazy uruchomiłem o 9 rano
pg_basebackup -h 127.0.0.1 -D /opt/pgsql/backup
Usługa PostgreSQL została zamknięta o godzinie 15.00.
źródło
Aby rozwinąć odpowiedź kgrittn, możesz także wykonać jedną
pg_dump
z tabeli, która została usunięta i odbudować ją w istniejącej bazie danych B, aby nie trzeba było tracić 6 godzin danych w innych tabelach.źródło