2011-06-13 2 views
2

"Continuous Archiving and Point-In-Time Recovery"을 사용하도록 PostgreSQL 데이터 디렉토리 백업을 자동화하는 python 스크립트를 작성했습니다.python tarfile로 postgresql 데이터 디렉토리 백업. 예상/무시할 오류는 무엇입니까

Pythons tarfile 라이브러리를 사용하여 아카이브를 만들고 싶습니다.

데이터 파일이 백업 중에 변경 될 수 있다는 것이 복잡합니다. 그들은 가하려고하는 파일 동안 복사 진행 변화를 복사 할 경우

일부 파일 시스템 백업 도구 경고 또는 오류를 방출하십시오 PostgreSQL manual 인용합니다. 활성 데이터베이스의 기본 백업을 수행 할 때이 상황은 정상이며 오류가 아닙니다. 그러나 이 의 불만 사항을 실제 오류과 구분할 수 있도록해야합니다. 타르를 복사하는 동안 파일이 잘린 경우 GNU 타르의

... 일부 버전은 치명적인 오류를 구별 오류 코드를 반환합니다. 다행히 GNU tar 버전 1.16 이상은 백업 중에 파일이 변경된 경우 1, 다른 오류의 경우 2로 으로 종료됩니다.

데이터 디렉토리에서 파일을 복사 할 때 Python에서 예상되는 예외는 무엇입니까? 오류가 중요한지 어떻게 판단 할 수 있습니까?

답변

1

tarfile 모듈을 사용하는 경우이 문제는 기본적으로 귀하에게 달려 있습니다. GNU tar는 파일을 처리하기 전후에 파일 크기와 ctime을 확인하고 파일이 다를 경우 불평합니다. 실제 오류가 아니며, 타르가 언급해야하는 것 같습니다. 하지만 유스 케이스에서는 그 사실을 염려하지 않으므로 잊어 버릴 수 있습니다. tarfile 모듈은이 문제에 대해 스스로 불평하지 않습니다.

다른 예외를 제외하고는 가능성이 무한합니다. 파이썬이 던지는 거의 모든 것들이이 경우 치명적일 수 있습니다.

-1

연속 보관은 PostgreSQL 설명서에서 설명합니다. 구현되어 있으므로 추가 스크립트를 작성할 필요가 없지만 많은 파일을 보유하게됩니다.

24.3.2. 기본 백업 만들기 - 지침을 따르고 tar를 만들면 데이터 파일이 변경되지 않습니다.

24.3.1. WAL 보관 설정하기 - 여기에서는 새로운 WAL 파일을 보관해야하며 변경되지는 않지만 별도의 파일입니다.

기본 백업에 WAL 파일을 추가하는 것이 안전하지 않다고 생각합니다. 파일을 기본 백업에 추가하는 동안 서버가 충돌하면 손상 될 수 있습니다.

+0

도움을 주셔서 감사합니다.하지만이 모든 부분을 이해했습니다. 파이썬 스크립트를 사용하여 초기베이스 백업을 수행합니다 (원격 서버에 즉시 스트리밍하려는 경우). 나는 단지 "당신이이 종류의 불만과 실제 오류를 구별 할 수 있도록"걱정하고 있습니다. WAL 파일은 나중에 실제로 보관됩니다. –

+0

당신이 할 수있는 최선의 방법은 필요하다면 Pythons tarfile을 테스트하는 것입니다. – jordani

+0

뭔가 작동하는 이유를 알고 싶습니다. 내 프로그램을 일부 synthetical 실험에 기반하지는 않습니다. 특히 PostgreSQL의 가능한 모든 동작을 재현하는 것이 쉽지 않다고 생각하기 때문에 –