일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- execution engine
- Hotspot VM
- feign
- webflux
- tcp
- resilience4j
- intelij
- optional
- Runtime data area
- try-catch-finally
- java
- jetbrain
- jvm
- 4-way-handshake
- Class Loader
- 람다표현식
- 코딩테스트
- zipWith
- circuitbreaker
- try-with-resources
- AutoCloseable
- 동작방식
- n+1
- Kotlin
- wagon-ssh
- springboot
- GC
- closeable
- try-catch
- 날짜쿼리
- Today
- Total
JuBin's personal study blog
[PostgreSQL] pg_dumpall 전체백업하기 본문
PostgreSQL 백업 방법에는 3가지가 있다.
1. SQL dump
2. 파일 시스템 레벨 백업
3. 연속 아카이빙
이중 SQL dump > pg_dump, pg_dumpall 백업 방법중 pg_dumpall 명령어를 통해 백업하는 방법을 알아본다.
# pg_dump 명령어는 지정한 하나의 데이터베이스만 한 번에 백업한다. 또한 데이터베이스 객체에 속하지 않는 role(데이터베이스 사용자), 테이블스페이스 정보는 백업되지 않는다. 데이터베이스 클러스터 기준 모든 정보를 백업받으려면 pg_dumpall을 이용한다.
pg_dump | 백업 |
하나의 데이터베이스만 백업 가능 데이터 압축, 분할, 커스텀 백업 설정 가능 |
role 또는 tablespace 백업 안됨 |
pg_dumpall | 백업 |
데이터베이스 전체 내용 백업 가능 role 또는 tablespace 백업 가능 |
|
pg_restore | 복구 |
비 텍스트 파일 덤프에서 가능 pg_dump로 백업된 파일 복구 가능 |
pg_dumpall로 백업된 파일은 사용 안됨 |
psql | 복구 |
텍스트 파일 덤프에서 가능 pg_dump, pg_dumpall로 백업된 파일 복구 가능 |
위 4가지 명령어에 대한 간단한 시나리오는 다음과 같다.
- pg_dump의 기본 백업 → psql 복구
- pg_dump의 커스텀 백업 → pg_restore 복구
- pg_dumpall 백업 → psql 복구
# pg_dumpall 명령을 사용할 때는 접속할 해당 데이터베이스의 슈퍼유저(postgres)로 접속해야한다. 그래야, role, 테이블스페이스 정보들을 덤프할 수 있다. 또한 이 덤프된 자료를 복원 할 때도 마찬가지다. 주의 할 점은 만일 기본 테이블스페이스 외에 다른 테이블스페이스를 사용한다면, 그 테이블스페이스의 실재 디렉터리도 덤프 하는 서버에서 사용하는 경로와 똑같이 만들어 놓아야한다.
## 실습
# 백업
1. 먼저 백업파일을 저장해 놓을 디렉토리 생성(pg_dumpall 명령어가 있는 /usr/bin밑에 postgre_backup_test로 생성)
>> cd /usr/bin
>> sudo mkdir ./postgre_backup_test
2. postgre_backup_test 디렉토리 소유자/그룹 변경
>> sudo chown -R postgres:postgres postgre_backup_test
* -R : 경로와 그 하위 파일들을 모두 변경한다.
3. 'ubuntu' -> 'postgres' 계정으로 전환
>> sudo su postgres
>> sudo su postgres -c (postgres 권한으로 바로 실행 , -c는 command line 약자)
4. pg_dumpall 명령어 실행
>> pg_dumpall > ./postgre_backup_test/test1.sql(test1.backup)
# 백업 2 ( 자동백업 script 작성, Linux 스케쥴러 cron 등록)
1. root 계정으로 접속
sudo su
2. postgres 계정으로 전환시 비밀번호 물어보지 않음
vim /etc/sudoer
postgres ALL=NOPASSWD: ALL 추가 //
3. postgres 계정전환, /home/ubuntu/postgres_backup/backup.sh쉘파일생성
sudo su postgres
cd /home/ubuntu/postgres_backup
vim backup.sh
4. 쉘파일 작성
echo "PostgreSQL Backup Start Time : " $(date +"%Y-%m-%d %H:%M:%S")
/usr/bin/pg_dumpall > /home/ubuntu/postgres_backup/$(date +"%Y%m%d")testBak.backup
echo "PostgreSQL Backup End Time : " $(date +"%Y-%m-%d %H:%M:%S")
5. 크론탭 등록
*/10 * * * * /home/ubuntu/backup.sh
# 복구
1. psql 명령어를 통해 복구
>> sudo -u postgres psql -f /usr/bin/postgre_backup_test/test1.backup
//실제로 시작한 기존 데이터베이스 이름을 지정할 수 있지만 비어있는 클러스터로 로딩한 경우 postgres를 일반적으로 사용해야 합니다.
'DataBase' 카테고리의 다른 글
[DataBase] 파티셔닝과 샤딩 (1) | 2023.05.21 |
---|---|
[PostgreSQL] Drop Database시 오류 (0) | 2021.02.02 |
[PostgreSQL] psql 명령어 정리 (1) | 2021.01.12 |
PostgreSQL Log 설정하기 (0) | 2021.01.11 |
[Oracle] 오늘이 속한 주의 월요일~일요일 날짜 추출 쿼리 (0) | 2020.09.20 |