본문으로 건너뛰기

4.4 WAL gap 진단

Archive 기반 PITR에서 restore_command가 필요한 segment를 찾지 못해 recovery가 recovery ended before configured recovery target was reached(PostgreSQL 13 이상)로 끝나거나, streaming standby에서 requested WAL segment ... has already been removed가 나오면 필요한 segment와 repository 상태를 확인합니다. 임의의 WAL을 다른 cluster에서 가져오면 안 됩니다.

확인 순서​

  1. PostgreSQL log에서 정확한 WAL file 이름을 기록합니다.
  2. Repository와 다른 archive copy에서 존재 여부를 확인합니다.
  3. Timeline history와 backup 시작 및 종료 WAL을 확인합니다.
  4. Archive command 실패, retention, object lifecycle 기록을 조사합니다.
  5. 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을 정기 작업으로 둡니다.