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 10196 게시물 읽기
No. 10196
WAL streaming replication 시 오류 발생
작성자
초보
작성일
2020-10-20 09:16ⓒ
2020-10-20 09:39ⓜ
조회수
2,068

안녕하세요, postgresql 초보입니다.

postgresql 11을 Master-Slave 로 streaming replication 구성하여 잘 사용 중, 어느날 갑자기 slave 에 반영이 되지 않아 로그를 살펴보니

slave 로그에

FATAL: could not receive data from WAL stream: ERROR: requested WAL segment xxxx has already been removed

와 같이 반복해서 출력되고 있습니다.

생각으로는 master에서 대량의 작업이 빠르게 발생하여 slave 에서 가져가기 전에 master 에서 WAL파일이 삭제가 된 것이 아닌가 싶습니다.

이럴 경우에 현재까지 누락된 master의 변경사항을 slave 에 적용하는 방법과 재발 방지를 위해 설정할 만한 것이 어떤 것이 있을지 문의드립니다.

 

 

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

postgresql.conf 파일 안에 wal_keep_segements 라는 파라미터가 있습니다. default 값은 0으로 설정되어있습니다~ wal_kep_segments 파라미터는 재사용되어 유실되지 않도록 slave 서버를 위해 남겨두는 wal 파일의 갯수를 의미합니다. 

아마도, 현재까지 누락된 master 의 변경사항을 slave가 따라가기 위한 방법으로는 Master 서버의 wal파일 존재 유무에 따라 달라질 것 같습니다. 이미 Master 서버도 max_wal_size 파라미터 값에 의해 WAL파일이 재활용되기 때문에 대량의 작업이 빠르게 발생했다면 pg_wal 디렉토리에는 이미 덮어씌여지지않았을까 하는 생각이 듭니다. 그래도 다행인건 archive 모드를 사용하셨더라면, slave 기동시 나오는 체크포인트 시점 이후의 WAL파일을 archive 디렉토리에서 찾은 후 Slave 서버에 복사가 필요합니다. 복사 후, recovery.conf 안에 restore_command를 통해 복사한 WAL파일을 갖고 최근 시점까지 복구하시는 방법이 있습니다.

그러나 위의 경우가 아니라면, pg_basebackup을 통해 재구성 해주시면 될 것 같습니다. 

김진주(kimjinju0730)님이 2020-10-20 15:39에 작성한 댓글입니다.
이 댓글은 2020-10-20 15:39에 마지막으로 수정되었습니다.

통상 복제 슬롯을 쓸 수 있는 상황 (아마 9.4 버전 이상인가 그럴겝니다.)이면,

pg_basebackup으로 복제본을 만들 때, 복제 슬롯을 지정하고, 그 지정한 슬롯을 사용하면

12버전까지는 트랜잭션 로그를 보관할 수 있는 한, 디스크 공간이 허용하는 한 복제에 필요한 트랜잭션 로그를 남겨 윗 문제를 피할 수 있습니다.

물론 슬롯을 만들어놓고 대기서버에서 그 로그를 안 땡겨가며 영원히 남아 운영 서버 쪽 장애를 만들기도 하겠죠. 잘 쓰면 wal_keep_segments 설정 보다 합리적이면서 안정적으로 사용할 수 있습니다.

 

자세한 이야기는

https://postgresql.kr/docs/current/warm-standby.html#STREAMING-REPLICATION-SLOTS

페이지를 참조하세요.

 

김상기(ioseph)님이 2020-10-20 22:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10201AQueryTool에서 PostgreSQL을 지원하는 기능을 추가하였습니다.
조동건
2020-10-27
1370
10200PostgreSQL Replication 방식에 대한 문의 [2]
반지현
2020-10-27
1450
10199OS상에서 dba계정을 알 수있는 방법이 있나요? [1]
이성문
2020-10-22
1432
10196WAL streaming replication 시 오류 발생 [2]
초보
2020-10-20
2068
10195Win10에서 설치 에러 [2]
전상도
2020-10-19
1927
10188Function 내의 검색 값 적용 시키기. [1]
레인버그
2020-10-09
1444
10187이곳 데이터베이스 서버 업그레이드 작업이 있었습니다 [1]
김상기
2020-10-02
1554
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다