문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| postgresql:backup [2022/07/22 13:00] – [SQL 덤프 백업] taekgu | postgresql:backup [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| + | ====== Backup ====== | ||
| + | ===== SQL 덤프 백업 ===== | ||
| + | |||
| + | ==== pg_dump ==== | ||
| + | pg_dump를 이용한 백업방법입니다. | ||
| + | |||
| + | <code zsh> | ||
| + | % pg_dump DB_NAME > DB_NAME_dump.sql | ||
| + | </ | ||
| + | === pg_dump 연결 옵션 === | ||
| + | Connection options: | ||
| + | <code zsh> | ||
| + | -d, --dbname=DBNAME | ||
| + | -h, --host=HOSTNAME | ||
| + | -p, --port=PORT | ||
| + | -U, --username=NAME | ||
| + | -w, --no-password | ||
| + | -W, --password | ||
| + | </ | ||
| + | |||
| + | === pg_dump 장점 === | ||
| + | |||
| + | SQL형식으로 퀴리가 출력되기 때문에 복원하려는 PostgreSQL버전이 다르거나, | ||
| + | |||
| + | pg_dump는 실행되는 시점의 스냅샷 상태로 작업을 진행합니다. | ||
| + | 이 때 배타적 잠금이 발생하지 않는 상태라면, | ||
| + | |||
| + | === pg_dump 주의점 === | ||
| + | 데이터를 포함한 모든 내용을 쿼리로 출력하기 때문에 리다이렉션되는 파일의 크기가 매우 커질수 있습니다. | ||
| + | |||
| + | 최대 파일 크기가 제한된 운영체제도 있어, 이 크기를 초과하는 경우에 문제가 될 수 있으며 이런경우 압축과 같은 기능을 이용하여 해결할 수 있습니다. | ||
| + | <code sh> | ||
| + | # 백업 시 | ||
| + | $ pg_dump DB_NAME | gzip > postgres_DB_NAME_bak.gz | ||
| + | |||
| + | # 복원 시 | ||
| + | $ gunzip -c postgres_DB_NAME_bak.gz | psql DB_NAME | ||
| + | </ | ||
| + | |||
| + | ==== pg_dumpall ==== | ||
| + | 그러나 이 pg_dump 는 데이터베이스 한개에만 적용됩니다. | ||
| + | |||
| + | PostgreSQL 에 구성된 모든 데이터베이스를 한번에 덤프받고 싶은 경우 pg_dumpall 명령어를 사용합니다. | ||
| + | |||
| + | pg_dumpall 은 모든 데이터베이스를 백업받기 때문에 DB_NAME 을 지정하지 않습니다. | ||
| + | |||
| + | <code sh> | ||
| + | $ pg_dumpall > postgres_ALL_DB_NAME_bak.sql | ||
| + | </ | ||
| + | === pg_dump 와 pg_dumpall 의 차이점 === | ||
| + | |||
| + | ^구분 ^pg_dump ^pg_dumpall ^ | ||
| + | |적용 범위|지정한 데이터베이스 1개|PostgreSQL 에 구성된 데이터베이스 전체| | ||
| + | |SQL 지원범위 |롤 생성 스크립트 (X)|롤 생성 스크립트 (O)| | ||
| + | | |데이터베이스 생성 스크립트 (X)|데이터베이스 생성 스크립xm (O)| | ||
| + | | |테이블 / SP 생성 스크립트 (O)|테이블 / SP 생성 스크립트 (O)| | ||
| + | | |권한부여 스크립트 (O)|권한부여 스크립트 (O)| | ||
| + | | |적재 스크립트 (O)|적재 스크립트 (O)| | ||
| + | |||
| + | ===== SQL 덤프 복원방법 ===== | ||
| + | pg_dump 로 받은 백업파일을 SQL 형태로 되어있기 때문에, 쿼리 import 형식으로 바로 수행이 가능합니다. | ||
| + | |||
| + | 위에서 백업받은 덤프 백업파일을 DB_NAME 에 수행해 줍니다. | ||
| + | |||
| + | |||
| + | |||
| + | 참고로 SQL 덤프백업에서는 데이터베이스와 사용자 생성 쿼리가 없기 때문에, | ||
| + | |||
| + | 복원할 데이터베이스와 사용자는 사전에 만들어 주어야 합니다. | ||
| + | <code sh> | ||
| + | $ psql DB_NAME < postgres_DB_NAME_bak.sql | ||
| + | </ | ||
| + | |||
| + | |||