PostgreSQL은 WAL 지원 백업 도중에 체크 포인트를 어떻게 처리합니까?


17

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 사이에 다른 것이 있다면 그것을 알고 싶습니다. 그것이 미치는 영향을 이해하십시오.

제발 깨달아 줘

답변:


7

당신은 물었다 :

postgreSQL이 일치하지 않는 일부 파일을 포함하는 pg_data 내용으로 복구를 처리하는 방법

pg_start_backup()데이터 파일이 최소한 체크 포인트만큼 최신인지 확인하십시오. 복구시 로그가 적용됩니다.

데이터가 오래된 경우 로그가 업데이트됩니다.

데이터가 새로운 경우 로그의 내용이 동일합니다. 다시 쓰면 상처가 없습니다.

로그는 미리 쓰기 (WAL)되기 때문에 데이터가 로그보다 더 새로운 것은 아닙니다.


당신은 물었다 :

... xfs-freeze...

xfs-freeze하는 모두이다 pg_start_backup(), 그것은 스냅 샷을하지 않습니다. 그렇게하려면 볼륨 관리자가 필요합니다.


당신은 물었다 :

... WAL이 모든 것을 재생할 수 있다면 왜 테이블 스페이스 생성 및 데이터베이스 생성 문이 지원되지 않습니까?

약간의 도움이 필요합니다. http://www.postgresql.org/docs/8.1/static/backup-online.html을 참조 하십시오 .

23.3.5. 경고

CREATE TABLESPACE 명령은 리터럴 절대 경로로 WAL 로그되므로 동일한 절대 경로를 사용하여 테이블 스페이스 작성으로 재생됩니다. 다른 머신에서 로그를 재생하는 경우 바람직하지 않습니다. 로그가 동일한 머신에서 재생 중이지만 새 데이터 디렉토리로 재생되는 경우에도 위험 할 수 있습니다. 재생은 여전히 ​​원래 테이블 스페이스의 컨텐츠를 겹쳐 씁니다. 이러한 종류의 잠재적 문제를 피하기 위해 테이블 ​​스페이스를 생성하거나 삭제 한 후 새로운 기본 백업을 수행하는 것이 가장 좋습니다.


xfs-freeze 관련 정보 볼륨 관리자에 따라 다르지만 스냅 샷 절차의 일부일뿐입니다. 그러나 WAL 복구가 진공 후 이진 테이블에서 진공 전 테이블 로그의 재생을 제대로 처리 할 것이라고 확신합니까? global / pg_control의 내용이 중요합니까? WAL이 모든 것을 재생할 수 있다면 왜 테이블 스페이스 작성 및 데이터베이스 작성 명령문이 지원되지 않습니까?
regilero

CREATE TABLESPACE공장. 업데이트 된 답변을 참조하십시오. 확실 VACUUM하지 않지만 왜 그렇지 않을지 상상할 수 없습니다.
J-16 SDiZ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.