logo
문의하기
서비스리소스블로그아카데미
logo
문의하기
logo

데이터와 IT 흐름을 읽는 시선,
뉴스레터 EXEM View 구독하기

Subscribe

주식회사 엑셈

서울시 강서구 마곡중앙8로5길 40

Tel 02-6203-6300 ㅣ Fax 02-6203-6301

ⓒ EXEM Co., Ltd. All Rights Reserved.
개인정보 처리방침서비스 이용약관
  • 서비스

    • Database
    • Application
    • AIOps
    • LLMOps
    • Big Data
    • All-in-One
    • Consulting
  • 신청

    • 세미나
    • 사옥 투어
  • 회사

    • 기업 소개
    • 채용 안내
    • IR
    • 오시는 길
  • 자료

    • 제품 브로슈어
    • 제품 살펴보기
    • 도서 실습자료
  • awsaws
  • microsoftmicrosoft
  • oracleoracle
  • naver-cloudnaver-cloud
PostgreSQL Replication - Parameter
PostgreSQL Replication - Parameter

PostgreSQL Replication - Parameter

이번 문서에서는 PostgreSQL Replication과 관련된 Parameter에 대해 알아보겠습니다.
아래 그림을 통해서 Replication 종류에 따라 설정이 필요한 Parameter를 확인할 수 있습니다. 각 Parameter에 대한 설명은 Replication Parameter에 알파벳 순서로 설명되어 있습니다.
notion image
 

Replication Parameter

archive_cleanup_command

Standby Server에서 더 이상 필요하지 않은 아카이브 WAL 파일을 정리하기 위해 사용됩니다. 보통 WAL 파일 정리를 쉽게 하기 위해 pg_archivecleanup Application을 주로 사용합니다.
ㅤ
Description
적용대상
Standby Server
카테고리
WRITE-AHEAD LOG → Archive Recovery
재기동
불필요
변경사항
• PostgreSQL 12 버전에서 생긴 Parameter입니다.
 

archive_command

WAL 파일이 가득 차면 Archive Directory에 보관하기 위해 실행하는 쉘 명령어를 지정합니다. 아래와 같이 지정하면 pg_wal Directory에 있는 WAL 파일을 /PostgreSQL/Archive Directory로 복사하라는 의미입니다.
ㅤ
Description
적용대상
Main Server
카테고리
WRITE-AHEAD LOG → Archiving
재기동
불필요
예약값
• %p : WAL 파일의 절대경로 • %f : 아카이브 파일 이름
 

archive_mode

Archive Mode를 사용하는 것으로 설정하면, WAL 파일이 저장되는 Directory(pg_wal)에 저장되는 WAL 파일을 archive_command에 설정된 명령을 통하여 Archive Directory로 전달합니다.(주로 복사합니다.) wal_keep_size(PostgreSQL 12 버전이하 wal_keep_segments) Parameter에 의해 생성된 지 오래된 WAL 파일부터 삭제되기 때문에 삭제되는 WAL 파일을 보관하기 위한 용도로 사용합니다. wal_level = replica 이상으로 설정되어야 하며, wal_level = minimal인 경우 Archive Mode를 사용할 수 없습니다.
ㅤ
Description
적용대상
Main Server
카테고리
WRITE-AHEAD LOG → Archiving
기본값
off
재기동
필요
Values
always, on, off
 

archive_timeout

일반적으로 WAL 파일이 가득 차야 새로운 WAL 파일로 전환(Switch)되는데, 트랜잭션이 없는 등 WAL 파일에 저장할 내용이 없는 경우 아카이브가 발생하지 않습니다. 아카이브가 발생하지 않으면 File-based Replication과 Streaming Replication 설정 시 Main Server와 Standby Server 간의 Data Lag이 존재하는 상태가 길어지게 됩니다. archive_timeout Parameter를 통해서 WAL 파일을 주기적으로 전환하는 시간을 지정할 수 있으며, 이는 주기적으로 아카이브를 발생시킬 수 있습니다. 일반적으로 60초 정도로 설정하며, 너무 짧게 설정할 경우 Archive Directory 크기가 증가하므로 설정에 주의해야 합니다.
ㅤ
Description
적용대상
Main Server
카테고리
WRITE-AHEAD LOG → Archiving
기본값
0
재기동
불필요
 

hot_standby

Database가 Standby 상태로 Replication이 이루어지는 Standby Server에서는 반드시 on으로 설정해야 합니다. off로 설정할 경우 Replication이 유지되는 동안 SQL을 수행할 수 없습니다.
ㅤ
Description
적용대상
Standby Server
카테고리
WRITE-AHEAD LOG → Standby Servers
기본값
on
재기동
필요
Values
on, off
 

max_replication_slots

Database가 지원할 수 있는 Replication Slot의 최대 수를 지정합니다. 기본값은 10이며, 현재 존재하는 Replication Slot 수보다 작은 값으로 설정하면 서버가 구동되지 않습니다. 또한 Replication Slot을 사용하기 위해서는 wal_level = replica 이상으로 설정해야 합니다.
ㅤ
Description
적용대상
Main Server
카테고리
REPLICATION → Sending Servers
기본값
10 (PostgreSQL 9.6 버전이하는 0)
재기동
필요
변경사항
• PostgreSQL 10 버전부터 기본값이 0에서 10으로 변경되었습니다.
 

max_wal_senders

WAL Sender 프로세스에 연결할 수 있는 최대 수를 지정합니다. 기본값은 10이며, WAL Sender 프로세스는 max_connections 보다 큰 값으로 설정할 수 없으며, 일반적으로 Standby Server의 수 + 1로 설정합니다.
ㅤ
Description
적용대상
Main Server
카테고리
REPLICATION → Sending Servers
기본값
10 (PostgreSQL 9.6 버전까지는 0)
재기동
필요
변경사항
• PostgreSQL 10 버전부터 기본값이 0에서 10으로 변경되었습니다.(0은 Replication이 비활성화를 의미)
 

primary_conninfo

Main Server에 연결 시 사용할 접속 문자열을 설정합니다. 기본적으로 Main Server의 Host(IP), Port, Replication 권한이 있는 User, Password를 지정합니다.
ㅤ
Description
적용대상
Standby Server
카테고리
WRITE-AHEAD LOG → Standby Servers
syntax
primary_conninfo = ‘host=10.10.45.230 port=5432 user=replicauser password=mypass’
재기동
불필요
변경사항
• PostgreSQL 12 버전부터 생긴 Parameter 입니다. • PostgreSQL 11 버전까지는 recovery.conf에 기술되어 있습니다.
 

primary_slot_name

Main Server에서 사용하는 Replication Slot 이름을 지정합니다. Replication Slot을 사용하지 않는 경우 지정하지 않아도 됩니다.
ㅤ
Description
적용대상
Standby Server
카테고리
WRITE-AHEAD LOG → Standby Servers
재기동
불필요
변경사항
• PostgreSQL 12 버전부터 생긴 Parameter 입니다. • PostgreSQL 11 버전까지는 recovery.conf에 기술되어 있습니다.
 

restore_command

WAL Archive 파일을 이용하여 Database를 복구할 때 사용하는 쉘 명령을 지정합니다.
ㅤ
Description
적용대상
Standby Server
카테고리
WRITE-AHEAD LOG → Archive Recovery
재기동
불필요
변경사항
• PostgreSQL 12 버전부터 생긴 Parameter 입니다.• PostgreSQL 11 버전까지는 recovery.conf에 기술되어 있습니다.
예약값
• %p : WAL 파일이 복사 절대경로 • %f : 아카이브 파일 이름
 

wal_keep_size

WAL 파일이 보관되는 pg_wal Directory에 저장 가능한 WAL 파일들의 총크기를 지정합니다. 메가바이트(MB) 단위로 설정이 가능하며, 하나의 WAL 파일은 통상 16MB 이므로 wal_keep_size WAL 파일의 개수를 계산할 수 있습니다. Standby Server에서 Replication 하기 전에 WAL 파일이 삭제되어 Replication이 중단되는 상황을 방지하기 위해 WAL 파일 개수를 조절해야 합니다.
ㅤ
Description
적용대상
Main Server
카테고리
REPLICATION → Sending Servers
기본값
0
재기동
불필요
변경사항
• PostgreSQL 13 버전부터 생긴 Parameter 입니다. • PostgreSQL 12 버전까지 WAL 파일 개수를 지정하는 wal_keep_segments Parameter를 사용하였습니다.
 

wal_level

PostgreSQL 9.0 버전에서 도입되었고 WAL에 기록되는 정보의 양을 결정합니다. 사용할 수 있는 값으로는 minimal, replica, logical이 있습니다. Physical Replication을 사용하고자 할때는 replica로 설정하며, Logical Replication을 사용하고자 할 때는 logical로 설정해야 합니다.
ㅤ
Description
적용대상
Main Server
위치
WRITE-AHEAD LOG → Settings
기본값
replica (PostgreSQL 9.6 이하버전은 minimal)
재기동
필요
Values
• minimal : Crash나 immediate shutdown으로 인해 복구에 필요한 정보만 기록. • replica : PostgreSQL 9.6 버전부터 archive와 hot_standby 내용 통합. - archive : minimal + WAL 보관 필요한 정보를 추가. - hot_standby : Archive + Standby Server에서 읽기 전용 쿼리를 실행하는데 필요한 정보 • logical : replica + 논리적 디코딩을 지원하는 데 필요한 정보를 추가. 저장되는 데이터양이 많아져 WAL의 크기 증가.
변경사항
• PostgreSQL 9.4 버전부터 logical이 추가되었습니다. • PostgreSQL 9.6 버전부터 replica가 archive와 hot_standby를 대신합니다. • PostgreSQL 10 버전부터 기본값이 minimal에서 replica로 변경되었습니다.
 
 

 
 
함께 보면 좋은 아티클
PostgreSQL Replication - Slot | 엑셈
PostgreSQL Replication Slot 알아보기
PostgreSQL Replication - Slot | 엑셈
https://ex-em.com/ko/academy/PostgreSQL-Replication-8
PostgreSQL Replication - Slot | 엑셈
PostgreSQL Replication - 설정확인 | 엑셈
PostgreSQL Replication 설정확인 알아보기
PostgreSQL Replication - 설정확인 | 엑셈
https://ex-em.com/ko/academy/PostgreSQL-Replication-6
PostgreSQL Replication - 설정확인 | 엑셈
Table of Contents
Replication Parameterarchive_cleanup_commandarchive_commandarchive_modearchive_timeouthot_standbymax_replication_slotsmax_wal_sendersprimary_conninfoprimary_slot_namerestore_commandwal_keep_sizewal_level