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 9737 게시물 읽기
No. 9737
Archive 관련 트러블 슈팅 부탁드립니다.
작성자
주지후(moto151)
작성일
2016-11-25 11:04
조회수
10,774

안녕하세요.

WAL, Archive 관련해서 많은 테스트를 해보고 있습니다.

Table을 하나 만들어서 generate_series를 이용하여 계속 트랜잭션을 발생시켰습니다.

pg_xlog에 WAL이 계속 쌓였고, archived_mode=on이었기 때문에 archive파일 또한 쌓였습니다.

pg_xlog의 archive_status 디렉토리에서도 .done 파일들을 확인할 수 있었습니다.

이 상황에서 WAL에 문제가 생겼을 때, 트랜잭션이 발생하느냐를 알아보기 위해 간단한 테스트를 진행했습니다.

가장 마지막에 쓰여진 WAL 파일을 rm명령으로 삭제하고, insert문을 발행했습니다.

오라클db의 경우 alert 메시지가 뜨는데, 이상하게도 PostgreSQL은 정상적으로 데이터가 들어가는 것입니다.

그리고 WAL도 그 다음 번호로 건너뛰어서 기록을 하고 있었습니다.

하지만 여기서 문제가 하나 발생했는데, WAL을 삭제한 시점부터 archive파일이 쌓이지 않습니다.

 

로그 파일을 살펴 봤더니,

00000: 2016-11-25 00:04:02 KST [5350]: [2623-1] user = ,db = ,remote =  app =  LOG:  archive command failed with exit code 1
00000: 2016-11-25 00:04:02 KST [5350]: [2624-1] user = ,db = ,remote =  app =  DETAIL:  The failed archive command was: "/opt/fsepv95server64/bin/pgx_xlogcopy.cmd" "pg_xlog/0000000100000000000000C1" "/postgres/backup/backup/archived_xlog/0000000100000000000000C1" discard "/postgres/data/waldiscard.txt"
01000: 2016-11-25 00:04:02 KST [5350]: [2625-1] user = ,db = ,remote =  app =  WARNING:  archiving transaction log file "0000000100000000000000C1" failed too many times, will try again later
 

삭제한 WAL 파일에 대해서 계속 아카이빙을 할 수 없다고 메시지가 수도 없이 발생합니다.

 

또한, 프로세스를 보아도 알 수 있습니다.

postgres  5350  5342  0 Nov24 ?        00:00:02 postgres: archiver process   failed on 0000000100000000000000C1

 

구글링을 찾아봤더니, pg_archivecleanup을 하면된다해서 해봤는데도 archive가 되지 않습니다.

그리고 pg_xlog의 archive_status 디렉토리를 보면

0000000100000000000000C1.ready  0000000100000000000000DD.ready  0000000100000000000000E9.ready  0000000100000000000000F5.ready  000000010000000100000001.ready
0000000100000000000000D2.ready  0000000100000000000000DE.ready  0000000100000000000000EA.ready  0000000100000000000000F6.ready  000000010000000100000002.ready

 

삭제된 WAL인 C1이후로 .done이 되지않고 .ready 상태입니다.

 

해결 방법 조언 부탁 드립니다.

 

감사합니다.

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

archive_command 처리에 대한 운영 노하우가 필요한 경우입니다.

데이터베이스는 트랜잭션 조각 파일들의 아카이브 처리 결과를 전적으로

사용자가 지정한 archive_command 내용에 의존합니다.

정책은 딱 하나입니다.

이 설정값에 지정된 명령을 실행할 것이고, 그 실행결과가 정상적이면 다음 작업을 진행하고,

그렇지 않으면 정상적인 결과가 나올 때까지 계속 반복한다. 입니다.

archive_status 디렉터리 내 .ready 파일은 있고, pg_xlog에 그 실 조각 파일이 없는 경우는

archive 작업을 중지하던가, 없는 파일을 만들어주어 계속 하던가를

사용자가 결정해야 합니다. 데이터베이스가 자동으로 처리하지 않습니다.

이 정책은 맞는 것 같고요.

자세한 이야기는

http://postgresql.kr/docs/9.6/high-availability.html

페이지에서 하고 있습니다.  방대한 양입니다. 꼼꼼히 읽어보세요.

김상기(ioseph)님이 2016-11-25 13:58에 작성한 댓글입니다.

답변 갑사합니다.

해당 wal을 강제로 생성 후, Full backup받고 새로 archive를 걸어야겠네요..

주지후(moto151)님이 2016-11-28 09:24에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9741DB 물리디스크 공간확보 문제 질의드립니다. Drop table관련 [1]
PG마스터
2016-12-11
9172
9740공공기관, 행정기관에서 postgresql 을 쓰는 사례가 있나요? [1]
전상도
2016-12-08
9032
9739중복 데이터 내에서 삭제하고픈 목록만 [1]
ampwings
2016-12-05
8381
9737Archive 관련 트러블 슈팅 부탁드립니다. [2]
주지후
2016-11-25
10774
9736passwordcheck 라이브러리 활용법 [2]
축구소년
2016-11-24
8595
9735PRIMARY KEY 장애 [4]
필이
2016-11-23
8612
9733postgresql 8.3.7 서버에 접속 관련 문의 [1]
탁구공
2016-11-18
8760
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다