Database

[Docker & PostgreSQL] pg_dump를 이용한 Backup and Restore

HANBEEN 2024. 3. 27. 00:53
반응형

 

오늘은 Docker 환경에서 PostgreSQL Backup and Restore를 해보겠습니다.

PostgreSQL 은 장애시 복구를 위해 3가지 백업방법이 있습니다.

1. SQL Dump

2. 파일 시스템 기반 백업

3. 연속 아카이빙을 통한 백업 

 

이중 SQL Dump를 이용해서 진행해보겠습니다. 

 

 * Databse Backup and Restore 란? https://hanco.tistory.com/56

 

[RDBMS] Database Backup and restore

데이터베이스 백업 및 복원은 보호목적으로 데이터를 백업하고. 계획되지 않은 종료, 실수로 인한 삭제 또는 데이터 손상으로 인해 데이터가 손실된 경우 복원하는 프로세스입니다. 데이터베이

hanco.tistory.com

 

pg_dump / pg_dumpall

PostgreSQL 에서는 pd_dump와 pg_dumpall 명령어를 통해 데이터 백업이 가능합니다. 

참고: https://www.postgresql.org/docs/10/app-pgdump.html

 

pg_dump

pg_dump pg_dump — extract a PostgreSQL database into a script file or other archive file Synopsis pg_dump [connection-option...] [option...] [dbname] …

www.postgresql.org

  • pg_dump 는 단일 데이터베이스를 덤프합니다.
  • pg_dumpall 모든 데이터베이스를 덤프합니다.

1. 데이터베이스 백업

컨테이너 접속

docker exec -i -t [container name] bash

 

데이터베이스 확인

 

데이터베이스 접속

$ \c [database name]

 

테이블 확인 

$ \dt

 

Database backup

$ pg_dump -U [Username] [dbname] > [dumpfile name]
$ pg_dumpall -U [Username] > [dumpfile name]

 

* 덤프하려는 모든 테이블에 대한 읽기 액세스 권한이 있어야 합니다. 전체 데이터베이스를 덤프하려면 postgres superuser 또는 데이터베이스 관리자 권한이 있는 사용자로 명령을 실행해야 합니다.

 

* 저의 경우에는 -U postgres를 주어 Postgres유저로 진행했습니다. 

 

* pg_dumpall은 모든 데이터베이스를 백업하기 때문에 데이터베이스 명을 지정하지 않습니다 

 

백업 파일 생성 확인 

 

새로운 데이터베이스 생성

$ create database [database name]

 

Database Restore

$ psql -U postgres [Database name] < [dump file name]

 

Restore 확인 

백업 파일을 복원한 새로 만든 데이터베이스에 접속하여 테이블 확인 결과, 백업했던 데이터 그대로 Restore된 것을 볼 수 있습니다

 

 

반응형

'Database' 카테고리의 다른 글

[RDBMS] Database Backup and restore  (0) 2024.03.24
[RDBMS] 데이터베이스 구성  (0) 2024.03.23
[Mac OS] Docker + PostgreSQL 시작하기  (0) 2024.03.19
[Mac OS] Docker + PostgreSQL 구성하기  (0) 2024.03.19