[PostgreSQL] PostgreSQL pg_basebackup 사용방법

개요

  • PostgreSQL 에서는 아카이브 모드 백업을 하여 데이터를 복원할 수 있습니다.
  • 복구 하는 방법에 대해서 정리 진행합니다.

pg_basebackup 사용방법

  • pg_basebackup 을 사용하여 Database 의 전체 내용을 백업 할 수 있습니다.
  • pg_basebackup 을 사용하는 방법은 다음과 같습니다.
  • 우선, Docker 로 실행 중인 Container 의 bash 로 접속 합니다.
> docker exec -it postgres bash
  • 다음으로 계정을 postgres 로 변경 합니다.
> su - postgres
  • 그리고 나서, Backup 을 받을 경로를 설정하고 pg_basebackup 을 진행하면 됩니다.
  • 저 같은 경우에는 /var/lib/postgresql/data/BACKUP 디렉터리 안에 전체 내용을 백업 받도록 하였습니다.
postgres@c09cac0dcc38:~$ pg_basebackup -p 5432 -U mirero  -D /var/lib/postgresql/data/BACKUP
  • 백업이 완료 되었으면, BACKUP 디렉터리 안에 있는 하위 폴더를 검색합니다.
  • 정상적으로 백업이 된 것을 확인할 수 있습니다.
postgres@c09cac0dcc38:~$ ls -al /var/lib/postgresql/data/BACKUP
total 276
drwx------ 1 postgres postgres   4096 Jul  5 23:56 .
drwx------ 1 postgres root       4096 Jul  5 23:55 ..
drwx------ 1 postgres postgres   4096 Jul  5 23:56 BACKUP
-rw------- 1 postgres postgres      3 Jul  5 23:56 PG_VERSION
drwxr-xr-x 1 postgres postgres   4096 Jul  5 23:55 archive
-rw------- 1 postgres postgres    227 Jul  5 23:55 backup_label
-rw------- 1 postgres postgres    220 Jul  5 23:56 backup_label.old
-rw------- 1 postgres postgres 202469 Jul  5 23:56 backup_manifest
drwx------ 1 postgres postgres   4096 Jul  5 23:56 base
drwx------ 1 postgres postgres   4096 Jul  5 23:56 global
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_commit_ts
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_dynshmem
-rw------- 1 postgres postgres   4821 Jul  5 23:56 pg_hba.conf
-rw------- 1 postgres postgres   1636 Jul  5 23:56 pg_ident.conf
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_logical
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_multixact
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_notify
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_replslot
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_serial
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_snapshots
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_stat
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_stat_tmp
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_subtrans
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_tblspc
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_twophase
drwx------ 1 postgres postgres   4096 Jul  5 23:55 pg_wal
drwx------ 1 postgres postgres   4096 Jul  5 23:56 pg_xact
-rw------- 1 postgres postgres     88 Jul  5 23:56 postgresql.auto.conf
-rwxrwxrwx 1 postgres postgres  28872 Jul  5 23:56 postgresql.conf
-rwxrwxrwx 1 postgres postgres  28871 Jul  5 23:56 postgresql.conf.bak
  • 결과 파일인 baseup_label 을 보면 WAL 파일은 51 번째 까지 적용되었다고 나와있습니다.
  • 이 말은, 51번째 이후는 보관을 해야 한다는 뜻입니다.
postgres@c09cac0dcc38:~/data/BACKUP$ cat backup_label
START WAL LOCATION: 0/51000028 (file 000000010000000000000051)
CHECKPOINT LOCATION: 0/51000060
BACKUP METHOD: streamed
BACKUP FROM: primary
START TIME: 2022-07-05 23:55:28 UTC
LABEL: pg_basebackup base backup
START TIMELINE: 1
  • pg_wal 경로에 가면 어떤 WAL 파일부터 보관해야 하는지 시점이 저장됩니다.
  • 000000010000000000000051.00000028.backup 이와 같이 backup 파일이 생긴 것을 확인할 수 있습니다.
postgres@c09cac0dcc38:~/data/pg_wal$ ls -al
total 114688
drwx------ 1 postgres postgres     4096 Jul  6 00:00 .
drwx------ 1 postgres root         4096 Jul  5 23:55 ..
-rw------- 1 postgres postgres      341 Jul  5 23:56 000000010000000000000051.00000028.backup
-rw------- 1 postgres postgres 16777216 Jul  6 00:00 000000010000000000000053
-rw------- 1 postgres postgres 16777216 Jul  6 00:00 000000010000000000000054
-rw------- 1 postgres postgres 16777216 Jul  5 23:53 000000010000000000000055
-rw------- 1 postgres postgres 16777216 Jul  5 23:54 000000010000000000000056
-rw------- 1 postgres postgres 16777216 Jul  5 23:55 000000010000000000000057
-rw------- 1 postgres postgres 16777216 Jul  5 23:55 000000010000000000000058
-rw------- 1 postgres postgres 16777216 Jul  5 23:56 000000010000000000000059
drwx------ 1 postgres postgres     4096 Jul  6 00:00 archive_status

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY