본문으로 건너뛰기

2.2 pg_restore 병렬 복구

pg_restore는 custom, directory, tar archive에서 object를 선택하고 순서를 조정할 수 있습니다. 복구 전에 target database와 role 정책을 정합니다.

createdb app_restore
pg_restore --dbname=app_restore --jobs=4 --verbose app.dump

Clean restore가 필요하면 빈 database를 새로 만드는 편이 안전합니다. --clean --if-exists는 기존 object를 삭제하므로 target 확인 없이 사용하지 않습니다.

단계별 복구

pg_restore --section=pre-data --dbname=app_restore app.dump
pg_restore --section=data --jobs=4 --dbname=app_restore app.dump
pg_restore --section=post-data --jobs=4 --dbname=app_restore app.dump

pre-data는 schema, data는 table data, post-data는 index, constraint, trigger 등을 포함합니다. 병렬 복구는 연결 수와 target I/O를 증가시킵니다.

선택 복구

pg_restore --schema=public --table=orders --dbname=app_restore app.dump
pg_restore --list app.dump > restore.list

목록 파일을 편집해 object를 선택할 수 있지만 dependency와 foreign key를 고려합니다. 일부 table만 복구한 뒤 application 일관성이 보장되는지 별도로 확인합니다.

복구 후 ANALYZE, extension, sequence 값, owner, privilege, row count와 핵심 query를 검증합니다. 성공 exit code는 business data의 정합성을 의미하지 않습니다.