PostgreSQL 실행 시간 로그 기준 점검

PostgreSQL의 실행 시간 로그 기준을 진단 필요와 로그량에 맞게 선택하고 SQL 정보가 포함된 로그를 보호하세요.

설명

Cloud SQL for PostgreSQL의 log_min_duration_statement는 완료된 SQL 문의 실행 시간에 따라 로그를 남깁니다. 0은 모든 완료된 SQL 문을 기록하고, 양수는 밀리초 단위의 최소 실행 시간을 지정하며, -1은 이 기능을 끕니다.

너무 낮은 기준은 로그량을 늘리고, 너무 높은 기준이나 비활성화는 성능 문제 분석에 필요한 기록을 줄일 수 있습니다. -1이 모든 환경에 적합한 보안 설정은 아닙니다.

잠재적 영향

  • 과도한 기록은 저장 공간, 로그 분석 비용과 데이터베이스 처리 부담을 늘릴 수 있습니다.
  • 기록 범위가 부족하면 느린 쿼리와 성능 저하 원인을 찾기 어려울 수 있습니다.
  • 기록된 SQL 문에 민감한 정보가 포함될 수 있으므로 로그 접근과 보존을 관리해야 합니다.

해결 방법

  • 진단 목적과 워크로드에 맞는 실행 시간 기준을 정하세요. 느린 쿼리를 찾으려면 적절한 양수 기준을 검토하세요.
  • settings.database_flags에 의도한 값을 명확히 지정하고, 다른 로그 설정과 함께 수집 범위를 확인하세요.
  • 변경 후 실제 로그량과 성능을 점검하고 로그 접근 권한과 보존 기간을 제한하세요.

google.cloud 1.14.0의 SQL 모듈은 기존 인스턴스 갱신을 지원하지 않습니다. 다음 예시는 생성용이며, 기존 인스턴스의 플래그는 지원되는 Cloud SQL 도구나 API로 변경하세요.

예시

다음은 모든 SQL 문 기록과 해당 기능 비활성화를 비교하는 예시입니다. 지원되는 PostgreSQL 버전과 인스턴스 등급, 실제 프로젝트와 리소스 이름, 서비스 계정 인증 정보를 별도로 준비하세요.

변경 전

yaml
- name: Cloud SQL 인스턴스 생성
  google.cloud.gcp_sql_instance:
    auth_kind: serviceaccount
    name: "{{ resource_name }}-db"
    project: test_project
    region: us-central1
    database_version: POSTGRES_13
    settings:
      tier: db-custom-1-3840
      database_flags:
        - name: log_min_duration_statement
          value: 0
    state: present

log_min_duration_statement: 0은 모든 완료된 SQL 문의 실행 시간과 문장을 기록합니다. 필요한 진단 범위와 로그 부담을 함께 검토하세요.

변경 후

yaml
- name: Cloud SQL 인스턴스 생성
  google.cloud.gcp_sql_instance:
    auth_kind: serviceaccount
    name: "{{ resource_name }}-db"
    project: test_project
    region: us-central1
    database_version: POSTGRES_13
    settings:
      tier: db-custom-1-3840
      database_flags:
        - name: log_min_duration_statement
          value: -1
    state: present

log_min_duration_statement: -1은 이 실행 시간 기반 로깅을 끕니다. 다른 로깅 설정까지 모두 끄는 것은 아니지만, 이 기능에서 얻던 진단 기록은 사라집니다. 필요한 경우 비활성화 대신 양수 기준을 사용하세요.

참조