PostgreSQL: postgresql.conf 파라미터 설정 방법
※ 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 각 파라미터의 역할과 사용 방법은 추후 포스팅에서 카테고리 별로 자세히 다룰 예정입니다.