CentOS 5.8 32 비트 OS에서 PostgreSQL 9.1 서버를 실행하고 있으며 WAL 아카이빙을 활성화했습니다. 이 서버에는 databaseA, databaseB 및 databaseC의 세 가지 데이터베이스가 있습니다. 누군가 데이터베이스 B에서 오후 12시에 테이블을 삭제하고 테이블이 삭제되기 직전까지 databaseB를 복원하려고합니다. 시간은 지금 오후 3시입니다.
다른 두 데이터베이스에서 3 시간 분량의 데이터를 잃지 않고 데이터베이스를 오후 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시에 종료되었습니다.
답변
원하는 시점으로 복원하여 다른 위치로 특정 시점 복구를 수행하고 문제 데이터베이스를 pg_dump합니다. 하나의 데이터베이스를 일반 위치에 놓고 다시 만든 다음 pg_dump 출력을로드합니다.
이와 같은 작업을 시작하기 전에 클러스터 데이터 디렉토리 트리의 파일 시스템 레벨 사본을 작성하고 저장하십시오.
답변
kgrittn의 답변을 확장하기 위해 pg_dump
삭제 된 테이블 중 하나만 수행 하고 기존 데이터베이스에서 다시 작성할 수 있으므로 다른 테이블에서 6 시간의 데이터를 잃을 필요가 없습니다.