PostgreSQL PITR 복원


9

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시에 종료되었습니다.

답변:


6

원하는 시점으로 복원하여 다른 위치로 특정 시점 복구를 수행하고 문제 데이터베이스를 pg_dump합니다. 하나의 데이터베이스를 일반 위치에 놓고 다시 만든 다음 pg_dump 출력을로드합니다.

이와 같은 작업을 시작하기 전에 클러스터 데이터 디렉토리 트리의 파일 시스템 레벨 사본을 작성하고 저장하십시오.


답변 해 주셔서 감사합니다. 다른 위치로 복구 한 다음 pg_restore를 사용하여 복원하는 데 필요한 단계를 추가 할 수 있습니까? 귀하의 답변으로 실제 기본 백업 위치를 사용하여 PITR을 수행하려고합니다.
Craig Efrein

0

kgrittn의 답변을 확장하기 위해 pg_dump삭제 된 테이블 중 하나만 수행 하고 기존 데이터베이스에서 다시 작성할 수 있으므로 다른 테이블에서 6 시간의 데이터를 잃을 필요가 없습니다.


귀하의 답변에 감사드립니다. 그러나 테이블 사이의 다양한 제약 조건과 관계로 인해 하나만 복원 할 수 없습니다.
Craig Efrein
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.