database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10163 게시물 읽기
No. 10163
pg_basebackup 백업/복원 방법
작성자
ㅇㅇ
작성일
2020-06-17 13:29ⓒ
2020-06-17 14:42ⓜ
조회수
2,179

운영DB서버의 백업이 정상적인지 개발DB에서 복원 테스트를 진행하고 있습니다.

백업 데이터로 PostgreSQL 기동하였으나 읽기 전용 대기 서버로 실행되어 문의드립니다.


1. 이중화 구성된 운영 Master DB에서 pg_basebackup으로 백업하였습니다.

> pg_basebackup -D /basebackup -F tar -U postgres -R

 

2. 생성된 base.tar, pg_wal.tar 파일과 pg_basebackup 이후 아카이브를

개발DB로 복사하고 압축을 풀어주었습니다.

/var/lib/pgsql/11/data/ : base.tar

/var/lib/pgsql/11/data/pg_wal : pg_wal.tar

/archivebackup : 백업 아카이브

 

3. 다음과 같이 설정하고 PostgreSQL를 가동하였으나 오류 발생되었습니다.

# 백업된 config 아닌 별도의 .conf 생성...

# postgresql.conf

   listen_addresses = '*'

   max_connections = 100


   shared_buffers = 128MB

   dynamic_shared_memory_type = posix

 

   wal_level = replica

   max_wal_size = 1GB

   min_wal_size = 80MB

   archive_mode = on

   archive_command = 'cp %p /var/lib/pgsql/11/archive/%f'

   archive_timeout = 0

 

   #hot_standby = on

 

 # recovery.conf

   restore_command = 'cp /archivebackup/%f %p'
   recovery_target_timeline= 'latest'

# 오류 내용...

   치명적오류:  읽기 전용 대기 서버로 운영이 불가능합니다. 현재 max_connections = 100 설정은 주 서버의 설정값(2000)보다 낮게 설정 되어 있기 때문입니다.

 

 4. max_connections = 2000 설정 이후 서비스는 시작되었으나,

백업된 아카이브가 모두 복원되지 않고 중간에 중단된 것으로 보입니다.

그리고 읽기 전용 대기 서버로 insert, create 등 데이터 수정이 불가한 상태입니다.

 

5. 질문사항

- 읽기 전용 대기 서버가 아닌 (쓰기 가능한) 일반 서버로 복원하기 위해서는  방법

- 백업된 아카이브 일체를 모두 복원하는 방법

이 글에 대한 댓글이 총 3건 있습니다.

백업 받은 놈으로 그냥 복원해서 새로운 데이터베이스 서비를 운영하려고 하는 것인지요?

이게 맞다면,

pg_wal.tar 파일을 /archivebackup/ 쪽에 다풀고,

새 데이터베이스 서버의 데이터 디렉터리안 pg_wal 안에는 wal 조각 파일 없게 하고,

recovery.conf 에는

   restore_command = 'cp /archivebackup/%f %p'

이거 한줄만 있으면 됩니다.

 

 

김상기(ioseph)님이 2020-06-17 22:37에 작성한 댓글입니다.

답변 감사합니다. 새로운 데이터베이스로 올리는 것을 목적으로 합니다.

(다만, 일부 과거 시점으로 복원할 필요도 있습니다.)

 

pg_wal.tar 파일이 궁금한데요.

기존 운영DB에서 백업된 아카이브와 파일명이 동일하고,

archive_status 폴더도 들어있더라고요.

 

/archivebackup/에 압축 풀어주는 경우 기존 아카이브와 겹치게 되는데

어떤 파일을 최종으로 해야 할까요?

 

ㅇㅇ님이 2020-06-18 09:16에 작성한 댓글입니다. Edit

wal.tar 에 있는 놈을 쓰고, 그 뒤에 것은 archive 거기 없으면 기존 wal 디렉터리에 있는 놈까지 사용하는 것이 일반적입니다.

wal.tar 안에 있는 제일 오래된 것, 그것보다 더 오래된 archive 안에 있는 것은 필요 없습니다.

pg_basebackup은 작업 전에 공유 버퍼에 있는 모든 변경 자료를 일단 디스크 자료 파일로 기록을 합니다.

체크포인트 작업이죠. 그래서, 이 작업을 강제로  빨리 끝내려면 pg_basebackup 옵션을 지정해야합니다.

그렇기 때문에, 이 체크포인트 작업 이전 모든 wal 파일은 필요가 없습니다.

김상기(ioseph)님이 2020-06-18 23:24에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10166join 상담합니다. [1]
oli주인
2020-06-27
1838
10165ecpg의 메모리 누수 문제 관련으로 문의드립니다. [2]
정상규
2020-06-18
1887
10164restore중 오류, exit code-6이 발생합니다. [2]
박 우현
2020-06-18
1918
10163pg_basebackup 백업/복원 방법 [3]
ㅇㅇ
2020-06-17
2179
10161실행계획 제가 읽는 방법이 맞는지 알려주세요... [3]
신은정
2020-06-08
2144
10160스트링인데 길이가 조사되지 않네요. [1]
JungHo Kim
2020-06-05
1943
10158pg_archivecleanup 은 어떻게 수행하세요? [1]
.test
2020-05-13
2169
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다