PostgreSQL 문제 해결
본 문서는 PostgreSQL 서비스 관련 문제를 해결하기 위한 방법을 설명합니다.
PostgreSQL 로그에 사용자 비밀번호 노출
CREATE, ALTER와 같은 명령어를 사용할 때 PostgreSQL 로그에 사용자의 비밀번호와 같은 주요 정보가 일반 텍스트로 노출됩니다.
# CREATE 명령어를 사용합니다.
postgres=> CREATE ROLE test_kc_mapo WITH PASSWORD ‘test0701’;
#로그를 조회하면 패스워드가 그대로 노출됩니다.
2025-07-01 12:00:00 UTC [12345] LOG: statement: CREATE ROLE test_kc_mapo WITH PASSWORD 'test0701'
▶️ 해결 방법: 보안 위험을 방지하기 위해 비밀번호 관련 작업은 SQL 명령문이 아닌 클라이언트에서 동작하는 \password 사용을 권장드립니다.
-
사용자 비밀번호 관련 작업에
\password명령어를 사용합니다.\password 사용 예시# 1. 'test_kc_mapo' 계정을 생성합니다. ALTER 로그를 확인하기 위해 로그인 권한을 부여하지 않습니다.
postgres=> CREATE ROLE test_kc_mapo NOLOGIN;CREATE ROLE
#2. `\password` 를 활용하여 비밀번호를 변경하고 로그인 권한을 부여합니다.
postgres=> \password test_kc_mapo
Enter new password:
Enter it again:
postgres=> ALTER ROLE test_kc_mapo LOGIN;
ALTER ROLE
postgres=> -
변경 작업에 대한 로그를 확인합니다.
로그 조회 예시# 암호화 방식은 PostgreSQL마다 상이하나 기본적으로 패스워드는 암호화되어 노출되지 않습니다.
2025-07-01 12:00:29 UTC [12345] LOG: statement: CREATE ROLE test_kc_mapo NOLOGIN;
2025-07-01 12:00:48 UTC [12345] LOG: statement: ALTER USER test_kc_mapo PASSWORD '*******'
2025-07-01 12:01:06 UTC [12345] LOG: statement: CREATE ROLE test_kc_mapo LOGIN;
PostgreSQL 인스턴스 그룹의 스토리지 사용량이 급격히 증가하는 경우
스토리지 사용량이 급격히 증가하는 경우, 주요 원인과 해결책은 다음과 같습니다.
Failover 이후 replication이 정상적으로 재구성되지 않은 경우
▶️ 해결 방법: Failover 이후 가용 상태(복제 상태) 확인
Failover 이후 replication이 정상적으로 재구성되지 않은 경우, pg_wal 관련 파라미터 설정 값에 따라 WAL 파일이 정상적으로 정리되지 않고 지속적으로 누적될 수 있습니다.
Failover 자체는 정상적으로 완료되었더라도 replication 연결이 정상적으로 이루어지지 않으면 WAL 파일이 삭제되지 않아 스토리지 사용량이 급격히 증가할 수 있습니다. 이 때문에 인스턴스 그룹 또는 인스턴스가 Storage-full 상태에 도달할 경우 서비스 장애로 이어질 수 있습니다.
따라서 Failover 이후에는 리소스 상태와 함께 가용 상태를 확인하여 replication 구성을 확인하는 것을 권장드립니다.
WAL(pg_wal)의 비정상적인 사용량 증가
▶️ 해결 방법: WAL 생성 및 보관 정책과 관련된 파라미터 확인
replication 연결 외에도 PostgreSQL에서는 WAL이 다양한 원인으로 누적될 수 있으므로 스키마(Table/Index) 사용량뿐만 아니라 WAL(pg_wal) 디렉터리의 사용량이 비정상적으로 증가하고 있는지 확인해야 합니다.
WAL 사용량이 급격히 증가할 경우 인스턴스 그룹 및 인스턴스가 Storage-full 상태에 도달하여 서비스 장애로 이어질 수 있습니다. 이를 예방하기 위해 리소스 상태를 주기적으로 점검하고, WAL 생성 및 보관 정책과 관련된 파라미터와 설정 값(예: wal_level, wal_keep_size, max_wal_size, checkpoint_timeout 등)을 함께 확인하시기를 권장드립니다.
정상적인 사용량 증가
▶️ 해결 방법: 사용량 확인 후 볼륨 확장
스토리지 사용량이 증가하는 경우, 인스턴스 상태는 다음 기준에 따라 변경됩니다.
- Storage-Warning: 인스턴스의 Log 또는 Data 디스크 사용량이 85% 이상이거나, 가용 용량이 30GB 이하로 남은 상태
- Storage-Error: 인스턴스의 Log 또는 Data 디스크 사용량이 95% 이상이거나, 가용 용량이 10GB 이하인 상태가 5분 이상 지속되는 경우
인스턴스가 Storage-Error 상태로 전환되면 서비스 안정성을 위해 일부 기능이 제한될 수 있습니다. 따라서 일반적인 경우, 스토리지 사용량을 확인한 후 볼륨 확장 을 통해 스토리지 용량을 증설하는 것을 권장드립니다.