PostgreSQL

PostgreSQL: postgresql.conf 파라미터 설정 방법

dewstream 2024. 12. 2. 08:00

※ PostgreSQL Configuration Parameter Tuning Guide.
※ Version: Linux 8.10 (Rocky), PostgreSQL 16.4.
 

 

RHEL 기반 리눅스에 PostgreSQL 설치 가이드

순서대로 따라 하시면 설치가 되는 마법을 체험하실 수 있습니다. 싱글 설치부터 파라미터 설정, HA 구성 그리고 Extension, Tool 등 순차적으로 작성 예정입니다. ※ Installing PostgreSQL 16 on Linux from so

dewstream.tistory.com

 
이전 포스팅에서 우리는 성공적으로 PostgreSQL을 설치했습니다!
 
PostgreSQL을 설치했지만, 기본 설정이 부족해 어려움을 겪으셨나요?
이번 포스팅에서는 바로 활용할 수 있는 파라미터 설정 방법을 안내해 드리겠습니다.
 
※ 급하신 분들은 스크롤을 쭉 내리셔서 아래 있는 내용을 적용하시면 됩니다.


먼저, 설치 시 기본으로 적용되어 있는 파라미터들을 확인해 보겠습니다.

▸ PostgreSQL 데이터 경로로 이동
→ 환경 변수를 설정해 두었다면 바로 사용할 수 있습니다.(설정 방법은 이전 포스팅에서 확인하실 수 있습니다.)
→ 환경 변수를 설정하지 않으셨다면, PostgreSQL 데이터 경로를 입력하여 이동해 주세요.

cd $PGDATA

 
▸ vi 편집기로 파라미터 파일 열기

vi postgresql.conf

 
▸ 내용 확인
→ 많은 파라미터가 나열되어 있지만, 이 중 실제로 활성화된 파라미터는 단 13개뿐입니다.

# -----------------------------
# PostgreSQL configuration file
# -----------------------------
#
# This file consists of lines of the form:
#
#   name = value
#
# (The "=" is optional.)  Whitespace may be used.  Comments are introduced with
# "#" anywhere on a line.  The complete list of parameter names and allowed
# values can be found in the PostgreSQL documentation.
#
# The commented-out settings shown in this file represent the default values.
# Re-commenting a setting is NOT sufficient to revert it to the default value;
# you need to reload the server.

...

#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------

# Add settings for extensions here

 
▸ 실제 활성화되어있는 파라미터 목록입니다.

1.  max_connections = 100
2.  shared_buffers = 128MB
3.  dynamic_shared_memory_type = posix
4.  max_wal_size = 1GB
5.  min_wal_size = 80MB
6.  log_timezone = 'Asia/Seoul'
7.  datestyle = 'iso, ymd'
8.  timezone = 'Asia/Seoul'
9.  lc_messages = 'ko_KR.utf8'
10. lc_monetary = 'ko_KR.utf8'
11. lc_numeric = 'ko_KR.utf8'
12. lc_time = 'ko_KR.utf8'
13. default_text_search_config = 'pg_catalog.simple'

 
로그와 아카이빙 설정 등의 필수 파라미터도 적용되어 있지 않습니다.
이 상태로는 확실히 우리가 원하는 수준으로 사용하는 데 어려움이 있어 보입니다.


그럼 이제 필요한 설정 방법에 대해 알아보겠습니다.

※ 기준 서버 스펙: CPU 2Core, Memory 4GB.
※ 환경 변수 등은 이전 포스팅 참고 부탁드립니다.

 

RHEL 기반 리눅스에 PostgreSQL 설치 가이드

순서대로 따라 하시면 설치가 되는 마법을 체험하실 수 있습니다. 싱글 설치부터 파라미터 설정, HA 구성 그리고 Extension, Tool 등 순차적으로 작성 예정입니다. ※ Installing PostgreSQL 16 on Linux from so

dewstream.tistory.com

 
▸ 먼저, 디폴트 postgresql.conf 파일을 백업하고 새로운 postgresql.conf 파일을 생성하도록 하겠습니다.

mv $PGDATA/postgresql.conf $PGDATA/postgresql.conf.bak
vi $PGDATA/postgresql.conf

 
▸ 삽입 모드

i

 
▸ 아래 내용 복사 후 붙여넣기

# network
listen_addresses = '*'
max_connections = 100

# memory
shared_buffers = 1GB

# WAL and archiving
wal_level = replica
wal_log_hints = on
archive_mode = on
archive_command = 'dd if=%p of=/backup/archive/%f'
min_wal_size = 1GB
max_wal_size = 2GB

# logging
logging_collector = on
log_directory = '/data/log'
log_filename = 'postgresql_%Y%m%d.log'

# date and time format
datestyle = 'iso, ymd'
timezone = 'Asia/Seoul'
log_timezone = 'Asia/Seoul'

# locale
lc_messages = 'ko_KR.utf8'
lc_monetary = 'ko_KR.utf8'
lc_numeric = 'ko_KR.utf8'
lc_time = 'ko_KR.utf8'

 
▸ 저장 후 vi 에디터 종료

esc
:
wq
Enter

 
▸ 파라미터 적용을 위해 아래 명령어로 재기동

pg_ctl restart

 

+ 추가 팁: PostgreSQL 설정 우선순위

우선순위 설정 방법 적용 범위
1 SET 세션
2 ALTER ROLE ... SET 사용자별
3 ALTER DATABASE ... SET DB별
4 ALTER SYSTEM SET + pg_reload_conf() 전체 인스턴스
5 postgresql.conf 전체 인스턴스

이번 포스팅에서는 PostgreSQL을 원활히 사용하기 위한 postgresql.conf 설정에 대해 살펴보았습니다.

PostgreSQL 각 파라미터의 역할과 사용 방법은 추후 포스팅에서 카테고리 별로 자세히 다룰 예정입니다.