반응형
설치·접속: PostgreSQL 설치와 접속
부제: 모든 DB와 롤·권한까지 클러스터 전체를 한 번에 떠 낸다
pg_dumpall > cluster.sql # 클러스터 전체를 평문 SQL로
pg_dumpall --globals-only > globals.sql # 롤·테이블스페이스 등 전역 객체만
pg_dumpall --roles-only > roles.sql # 롤만
--
-- Roles
--
CREATE ROLE app_ro;
ALTER ROLE app_ro WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'SCRAM-SHA-256$4096:...';
CREATE ROLE postgres;
ALTER ROLE postgres WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION BYPASSRLS;pg_dumpall은 pg_dump가 놓치는 부분을 채운다. 하나의 DB만 뜨는 pg_dump와 달리, 클러스터 안의 모든 데이터베이스에 더해 롤(유저)·비밀번호·테이블스페이스 같은 전역 객체까지 담는다. 출력은 항상 평문 SQL이라 psql로 되돌린다. 실무에서 자주 쓰는 건 --globals-only인데, 개별 DB는 pg_dump -Fc로 각각 뜨고 공통 롤·권한만 이걸로 따로 백업해 두는 조합이 정석이다. 위 출력처럼 비밀번호 해시(SCRAM)까지 담기므로 백업 파일의 접근 권한을 반드시 조인다.
이렇게도 쓴다
롤·권한 같은 전역 객체만 백업한다. (pg_dump와 짝지어 쓰는 조합)
pg_dumpall --globals-only > globals.sql
롤(유저)만 뽑는다. (새 서버로 계정 이관할 때)
pg_dumpall --roles-only > roles.sql
클러스터 전체를 날짜별로 압축 백업한다. (파이프 조합)
pg_dumpall | gzip > /backup/cluster_$(date +%F).sql.gz
전역 객체를 먼저 넣고 개별 DB를 커스텀 포맷으로 복원한다. (실무 조합)
psql -f globals.sql && pg_restore -C -d postgres shop.dump
새 서버로 롤을 그대로 옮긴다. (psql 파이프 조합)
pg_dumpall --roles-only | psql -h newhost -U postgres
매주 일요일 전역 객체 백업을 cron에 건다.
0 4 * * 0 pg_dumpall --globals-only > /backup/globals_$(date +\%F).sql반응형
'명령어 > DB' 카테고리의 다른 글
| [PostgreSQL] pg_basebackup 물리 백업 (0) | 2026.07.30 |
|---|---|
| [PostgreSQL] pg_restore 아카이브 복원 (0) | 2026.07.30 |
| [PostgreSQL] pg_dump 단일 DB 백업 (0) | 2026.07.30 |
| [PostgreSQL] dropdb 데이터베이스 삭제 (0) | 2026.07.30 |
| [PostgreSQL] createuser 역할(role) 생성 (0) | 2026.07.30 |