2.1 pg_dump 형식과 일관성
pg_dump는 한 database를 일관된 snapshot으로 읽어 SQL 또는 archive를 만듭니다. 실행 중 다른 transaction을 막지는 않지만 schema 변경과 lock 경합을 고려해야 합니다.
pg_dump --format=custom --file=app.dump --dbname=app
pg_dump --format=directory --jobs=4 --file=app.dir --dbname=app
| 형식 | 특징 | 복구 |
|---|---|---|
| plain | 사람이 읽는 SQL | psql |
| custom | 압축과 선택 복구 | pg_restore |
| directory | 병렬 dump와 restore | pg_restore |
| tar | archive | pg_restore |
큰 database에서는 directory 형식과 병렬 job이 유용하지만 source I/O와 CPU에 부하를 줍니다. Production에서 작은 job 수로 시작하고 replica에서 실행할 때 recovery conflict와 replication lag를 관찰합니다.
Snapshot 공유
여러 작업이 같은 시점을 읽어야 하면 exported snapshot을 사용할 수 있습니다. pg_dump 자체의 parallel dump는 내부적으로 synchronized snapshot을 사용합니다.
검증
File 존재와 exit code만 확인하지 않습니다.
pg_restore --list app.dump | sed -n '1,30p'
sha256sum app.dump
Archive 목록, size 추세, checksum을 기록하고 실제 다른 cluster에 restore합니다. Logical dump는 WAL과 결합한 cluster PITR 용도가 아닙니다.