본문으로 건너뛰기

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사람이 읽는 SQLpsql
custom압축과 선택 복구pg_restore
directory병렬 dump와 restorepg_restore
tararchivepg_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 용도가 아닙니다.

참고: pg_dump, SQL Dump