본문 바로가기
DBMS/PostgreSQL

[PostgreSQL] 아카이브 모드 설정

by 드바 2023. 11. 19.
OS: linux 7.5
DBMS: PostgreSQL 14.9

 

[목차여기]

 

아카이브 모드 관련 파라미터 변경

postgresql.conf

wal_level = replica -- replica 또는 이상
archive_mode = on -- 아카이브 모드 on        
archive_command = 'test ! -f /home/postgres/arch/%f && cp %p /home/postgres/arch/%f' -- 타겟 경로(/home/postgres/arch/)에 해당파일이 없으면 아카이브 실행
archive_timeout = 60 -- 지정한 시간() 동안 아카이브 없으면 강제 아카이브(log switch) 수행, 설정안해도 상관없음

 

파라미터 설정 후 DB 재기동

pg_ctl stop
pg_ctl start

 

WAL 파일 경로의 archive_status 디렉토리를 보면

사용이 끝난 WAL 파일(아카이브 대상)은 ready 상태로 표시해 둔 것이 확인됩니다.

[postgres@svr1:/var/lib/pgsql/14/data/pg_wal/archive_status]$ pwd
/var/lib/pgsql/14/data/pg_wal/archive_status
[postgres@svr1:/var/lib/pgsql/14/data/pg_wal/archive_status]$ ls -lrt
total 0
-rw------- 1 postgres postgres 0 Nov 18 20:12 000000010000000000000001.ready
-rw------- 1 postgres postgres 0 Nov 18 20:13 000000010000000000000002.ready
-rw------- 1 postgres postgres 0 Nov 18 20:13 000000010000000000000003.ready
-rw------- 1 postgres postgres 0 Nov 18 20:13 000000010000000000000004.ready

 

아키이브가 완료되면 done 상태로 변경됩니다.

그리고 내부적으로 체크를 거친 후 해당 표시 파일들은 없어집니다.

[postgres@svr1:/var/lib/pgsql/14/data/pg_wal/archive_status]$ ls -lrt
total 0
-rw------- 1 postgres postgres 0 Nov 18 20:12 000000010000000000000001.done
-rw------- 1 postgres postgres 0 Nov 18 20:13 000000010000000000000002.done
-rw------- 1 postgres postgres 0 Nov 18 20:13 000000010000000000000003.done
-rw------- 1 postgres postgres 0 Nov 18 20:13 000000010000000000000004.done
-rw------- 1 postgres postgres 0 Nov 18 20:13 000000010000000000000005.done

 

아카아브 로그 삭제 스크립트 예시

-- 매일 새벽1시에 /archive 디렉토리에 저장된 아카이브 WAL 파일 중에서 최근 14일 로그 남기고 삭제하는 crontab의 예
00 01 * * * find /home/postgres/arch/* -mtime +14 | xargs rm -f

 

댓글