У меня есть сервер PostgreSQL 9.1, работающий на 32-битной ОС CentOS 5.8, и я включил архивирование WAL. На этом сервере есть три базы данных: база данных A, база данных B и база данных C. Кто-то удаляет таблицу в 12 часов вечера в базе данных B, и я хочу восстановить базу данных B как раз до того времени, когда таблица была удалена. Время сейчас 3 часа дня.
Как я могу просто восстановить базу данныхB до 12 часов вечера, не теряя данных за три часа в двух других базах данных?
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'
Я запустил свою резервную копию в 9 часов утра
pg_basebackup -h 127.0.0.1 -D /opt/pgsql/backup
Служба PostgreSQL была закрыта в 3 часа дня.
источник
Чтобы расширить ответ kgrittn, вы также можете выполнить
pg_dump
только таблицу, которая была отброшена, и перестроить ее в существующей базе данныхB , поэтому вам не нужно терять 6 часов данных в других таблицах.источник