PostgreSQL을 운영하다 보면 데이터 변경을 확인해야 할 때가 있습니다. 설정 파일 수정부터 실제 반영까지의 전체 과정을 정리합니다.
postgresql.conf) 찾기가장 먼저 해야 할 일은 DB가 실제로 읽고 있는 설정 파일의 위치를 찾는 것입니다. 엉뚱한 파일을 수정하면 아무리 재시작해도 반영되지 않습니다.
SHOW config_file;
결과 예시: `/var/lib/pgsql/14/data/postgresql.conf`
확인한 경로의 파일을 sudo 권한으로 열고 아래 항목들을 수정합니다.
sudo vi /var/lib/pgsql/14/data/postgresql.conf
#------------------------------------------------------------------------------
# REPORTING AND LOGGING
#------------------------------------------------------------------------------
부분을 찾아준 후 값을 세팅합니다.
| 항목 | 설정값 | 설명 |
|---|---|---|
| logging_collector | on | 로그 수집기 활성화 (Restart 필수) |
| log_directory | 'pg_log' | 로그 저장 폴더명 (data 경로 내에 생성됨) |
| log_filename | 'postgresql-%Y-%m-%d_%H%M%S.log' | 로그 파일 이름 규칙 |
| log_statement | 'mod' | INSERT, UPDATE, DELETE 등 데이터 변경 쿼리 기록 |
| log_line_prefix | '%m [%p] %u@%d %h ' | 로그 머리말(시간, PID, 유저, DB, 접속IP) |
| log_rotation_age | 1d | 하루마다 새 로그 파일 생성 |
logging_collector 설정은 DB 엔진이 부팅될 때만 읽히므로 반드시 서비스 재시작이 필요합니다. 이때 서비스 명칭을 정확히 확인해야 합니다.
systemctl list-units --type=service | grep pgsql
결과: pgsql14.service 확인
sudo systemctl restart pgsql14
재시작 후 DB에서 설정이 정상적으로 on이 되었는지 확인합니다.
SHOW logging_collector; -- 'on'이 나와야 함
SHOW log_statement; -- 'mod'가 나와야 함
이제 PostgreSQL이 자동으로 pg_log 디렉터리를 생성하고 로그를 쌓기 시작합니다.
SHOW data_directory;
# 경로가 /var/lib/pgsql/14/data 일 경우
cd /var/lib/pgsql/14/data/pg_log
sudo ls -lh # 생성된 로그 파일 목록 확인
sudo tail -f postgresql-xxxx.log # 실시간 로그 모니터링
pg_log 폴더는 postgres 계정 소유입니다. 일반 계정으로 접근하려면 반드시 앞에 sudo를 붙이세요.log_statement = 'all'로 설정하면 모든 조회가 기록되어 디스크가 금방 찰 수 있습니다. 운영 환경에서는 'mod'를 권장합니다.#를 반드시 지워야 설정이 적용됩니다.