4.4 WAL gap 진단
Recovery가 requested WAL segment ... has already been removed 또는 file not found에서 멈추면 필요한 segment와 repository 상태를 확인합니다. 임의의 WAL을 다른 cluster에서 가져오면 안 됩니다.
확인 순서
- PostgreSQL log에서 정확한 WAL file 이름을 기록합니다.
- Repository와 다른 archive copy에서 존재 여부를 확인합니다.
- Timeline history와 backup 시작 및 종료 WAL을 확인합니다.
- Archive command 실패, retention, object lifecycle 기록을 조사합니다.
- Gap을 채울 수 없다면 더 오래된 연속 backup set 또는 허용 가능한 다른 target을 선택합니다.
WAL file 이름이 같아도 system identifier가 다른 cluster의 file은 사용할 수 없습니다. pg_controldata와 backup metadata로 cluster identity를 확인합니다.
예방
- Backup retention과 archive retention을 함께 계산합니다.
- Base backup이 참조하는 WAL을 먼저 지우지 않습니다.
- Archive 성공 metric만 아니라 object read test를 수행합니다.
- Repository lifecycle rule을 backup 도구의 retention과 조정합니다.
- Restore drill에서 가장 오래 보존해야 하는 target도 시험합니다.
WAL gap은 복구 시점에 처음 발견되면 늦습니다. pgBackRest check, Barman check와 repository verification을 정기 작업으로 둡니다.