PostgreSQL v9.0에서는 WAL 아카이빙 시스템이 작동합니다. 따라서 WAL 파일은 정기적으로 보관됩니다 (WAL이 3 개 생성되거나 WAL이 15 분보다 오래된 경우).
이제 PG_DATA 디렉토리의 바이너리 팩업을 추가합니다 (pg_xlog 하위 디렉토리 제외). 이를 위해 pg_start_backup(),
이진 복사 및을 수행합니다 pg_stop_backup()
.
pg_start_backup과 pg_stop_backup이 수행하는 작업을 잘 이해하고 있다고 생각합니다. 첫 번째는 검사 점을 만들고 마지막은 마지막 WAL 파일이 보관되도록합니다.
에서 공식 문서 이진 데이터는 우리가해야 사본을 우리는 볼 수 있습니다 :
tar 또는 cpio (pg_dump 또는 pg_dumpall 아님)와 같은 편리한 파일 시스템 백업 도구를 사용하여 백업을 수행하십시오. 이렇게하는 동안 데이터베이스의 정상적인 작동을 중지 할 필요도없고 바람직하지도 않습니다.
그래서 나는 매우 당황합니다. 이것은 복사하는 동안 검사 점이 수행 될 수 있음을 의미합니다. 복사 명령을 수행하는 동안 복사를 수행하는 동안 데이터 변경을 허용해야한다는 내용의 문서를 많이 보았습니다. 올바른 도구를 찾는 것만으로도 괜찮습니다. 그러나 내 질문은 postgreSQL이 일관성이없는 일부 파일 (일부는 체크 포인트 이전, 일부는 이후)을 포함하는 pg_data 내용으로 복구를 처리하는 방법입니다 .
트랜잭션 로그를 재생함으로써 Postgresql은 이러한 모든 파일을 올바른 상태로 둘 수 있습니까? 백업을 수행하는 동안 테이블 생성 및 삭제 작업이 위험하다는 것을 알았습니다. 진공 명령 과 같은 위험한 작업이 없습니까? pg_backup이 진공 작업을 중단합니까? 이진 복사 프로세스의 시작이 끝날 때 전역 / pg_control 파일의 복사본을 만들어야합니까? 더 빠른 복원 프로세스를 위해 스냅 샷 가능 파일 시스템 (xfs-freeze와 같은)을 사용해야합니까?
백업 스크립트 충돌로 인해 pg_stop_backup이 자동으로 시작되지 않으므로 백업 상태가 오래 지속될 가능성이 있습니다 (나이 지오스가 누군가 pg_stop_backup ()을 고치기 위해 누군가에게 울릴 때까지). 따라서 PostgreSQL 에서이 두 comand 사이에 다른 것이 있다면 그것을 알고 싶습니다. 그것이 미치는 영향을 이해하십시오.
제발 깨달아 줘