pg_dump VS pg_dumpall
pg_dump | pg_dumpall | |
백업 범위 | 단일 데이터베이스 | 전체 데이터베이스 클러스터 |
백업 내용 | 테이블, 데이터, 객체 | 데이터베이스 + 사용자 계정, 권한, 설정 |
형식 지원 | SQL, 사용자 지정(-Fc, -Fd 등) | SQL 스크립트만 가능 |
복원 명령어 | psql, pg_restore | psql |
주요 사용 사례 | 특정 데이터베이스만 백업 | 서버 전체를 백업 |
pg_dumpall을 쓰면 서버 전체를 백업하는 것이여서 편리하긴 하지만
데이터베이스명이 변경되는 경우 pg_dumpall을 써서 백업한 파일로 복원할 경우 오류가 발생한다.
그렇게 때문에 pg_dumpall보다는 데이터베이스별로 pg_dump로 백업해서 관리하는 것이 더 용이한다고 생각한다.
DB 백업 명령어
docker exec -i [db 서비스명] pg_dump -U [사용자 id] -d [database 명령어] > [백업 파일명].sql
# 예시
docker exec -i test-db pg_dump -U test_usr -d test_db > dump_test_20241121.sql
DB 복원 명령어
docker exec -i [PostgreSQL 컨테이너 이름] psql -U [사용자 이름] -d [데이터베이스 이름] < [복원 파일 경로]
# 예시
docker exec -i test-db psql -U test_usr -d test_db < dump_test_20241121.sql