모든 PostgreSQL 쿼리 기록

Bilal Shahid 2023년6월20일
  1. PostgreSQL 쿼리 개요
  2. 구성 파일 찾기
  3. 데이터 디렉토리 경로 찾기
  4. PostgreSQL 구성 및 로그 출력 생성
  5. PostgreSQL 다시 시작
  6. 로그 생성 확인
모든 PostgreSQL 쿼리 기록

PostgreSQL은 견고성, 속도, 안정성 및 고성능으로 시장에서 인기가 있습니다. 또한 PostgreSQL을 사용하면 몇 가지 구성 설정만 변경하면 비교적 쉽게 로깅할 수 있습니다.

이러한 설정은 특정 클라이언트 세션에 대해서만 일시적으로 로깅을 활성화하여 메모리에서 변경할 수 있습니다. 그러나 Postgres는 영구적으로 작동하도록 모든 쿼리를 기록할 수 있습니다.

이 기사에서는 모든 PostgreSQL 쿼리를 기록하고 구성 파일을 업데이트하는 방법을 설명합니다.

PostgreSQL 쿼리 개요

PostgreSQL은 사용자가 필요한 모든 것을 사용, 수정 및 구현할 수 있는 매우 안정적인 데이터베이스 애플리케이션으로 유명합니다. 결과적으로 이것은 전 세계적으로 많은 분석 및 웹 응용 프로그램의 기본 데이터베이스입니다.

SQL은 데이터베이스에 데이터를 저장하고 조작하는 구조화된 쿼리 언어입니다. SQL 쿼리는 어디에서나 관계형 데이터베이스 관리 시스템에서 다양한 데이터 작업을 수행하는 데 도움이 됩니다.

이 강력한 언어를 통해 복잡한 쿼리 실행에서 데이터 가져오기, 데이터베이스의 레코드 삽입, 업데이트 및 삭제에 이르기까지 다양한 작업을 수행할 수 있습니다.

또한 데이터베이스에 새 개체를 만들고 권한 테이블, 뷰, 프로시저, 함수 등을 설정할 수 있습니다.

Postgres의 모든 쿼리 기록 기능의 경우 구성 설정을 변경하고 서버를 다시 시작하여 PostgreSQL 내에서 로깅을 활성화해야 합니다.

구성 파일 찾기

postgresql.conf 구성 파일을 찾을 수 없는 경우 해당 위치를 찾는 간단한 방법을 사용할 수 있습니다. 먼저 postures client에 연결하고 다음 명령을 실행합니다.

postgres=# SHOW config_file;

명령을 실행한 후 postgresql.conf 파일의 경로를 얻습니다. 다음 명령을 사용하여 텍스트 편집기(여기에서는 nano 사용)로 파일을 열고 설정 변경을 시작합니다.

$ nano /etc/postgresql/version/main/postgresql.conf

데이터 디렉토리 경로 찾기

Postgres 설치 데이터 디렉토리의 경로를 확인하십시오. 그런 다음 구성 파일을 검색한 것처럼 데이터 디렉터리를 검색합니다.

postgres=# SHOW data_directory;

데이터 디렉토리의 경로를 제공합니다. 그러나 디렉터리 및 구성 파일은 동일한 설치 경로에 있습니다. 따라서 나중에 사용할 수 있도록 데이터 디렉토리와 구성 디렉토리를 복사하십시오.

PostgreSQL 구성 및 로그 출력 생성

postgresql.conf 파일을 열고 ERROR REPORTING AND LOGGING 섹션까지 아래로 스크롤합니다. 여기에서 주석이 달린 여러 구성 설정을 볼 수 있습니다.

이러한 설정 중 몇 가지는 중요합니다. logging_collectorlog_destination. 또한 설정해야 하는 몇 가지 권장 설정이 있습니다.

그러나 자신의 필요에 맞게 변경할 수 있습니다. 권장 설정은 다음과 같습니다.

  • log_destination = 'csvlog'

  • logging_collector =on

  • log-directory = 'pg_log'

  • log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

  • log_min_error_statement = error

  • set log_min_duration_statement= 0 매개변수로 모든 명령문 기록

  • 이 단계는 선택 사항입니다. 다음 코드를 실행합니다.

    SELECT set.config('log_statement','all, true );
    

위에서 설명한 대로 변수에 값을 설정한 후 PostgreSQL 구성을 다시 로드합니다. 다음과 같이 할 수 있습니다.

/usr/pgsqlversion/bin/pg_ctl reload -D /var/lib/pgsql/version/data/

이러한 설정으로 log_filename 설정의 주석을 제거하여 타임스탬프와 로그 파일의 적절한 이름을 생성했습니다. 또한 Postgres가 CSV 형식으로 로그를 생성하여 데이터 디렉토리 내의 pg_log 디렉토리에 출력하도록 합니다.

data/postgresql.conf 파일에서 log_statement 설정을 'all'로 변경합니다. 이 작업을 마치면 확인해야 할 몇 가지 다른 설정이 있습니다.

log_destination, logging_collector 및 변수가 on으로 설정되어 있는지 확인하십시오. log_directory가 데이터 디렉토리 내에 존재하고 Postgres 사용자가 여기에 쓸 수 있는지 확인해야 합니다.

PostgreSQL 다시 시작

Postgres가 모든 쿼리를 기록하는 마지막 단계는 PostgreSQL 서비스를 다시 시작하는 것입니다. 계속할 때 변경한 구성 파일의 설정이 적용될 수 있어야 합니다.

그러나 Postgres 재시작은 다양한 시스템에서 다를 수 있습니다. 일반적으로 Unix 시스템에는 작업을 수행하는 명령이 있습니다. 명령은 다음과 같습니다.

$ service postgresql restart

로그 생성 확인

Postgres 시스템을 다시 시작하면 변경 사항이 적용됩니다. 다시 시작하면 로깅이 즉시 시작됩니다. 이를 확인하려면 특정 Postgres 설치의 data/pg_log 디렉토리로 이동하십시오.

몇 단계 전에 데이터 디렉토리 경로를 저장하도록 요청했습니다. 이것은 당신이 그것을 사용하는 곳입니다. 다음으로 끝에 /pg_log를 추가하여 해당 디렉터리로 이동하여 로그 디렉터리로 이동합니다.

$ cs /var/lib/postgresql/version/main/pg_log

파일 목록을 계속 진행합니다.

$ ls -l

이전 Postgres 서비스를 다시 시작한 후 로그 파일이 생성됩니다. 이러한 자동 생성 로그 파일은 Postgres가 몇 가지 구성 설정을 변경하여 모든 쿼리를 기록하도록 만들어집니다.

시간이 지남에 따라 로그 파일은 많이 커지는 경향이 있으며 궁극적으로 시스템을 종료시킬 수 있습니다. 이를 방지하려면 안전을 위해 로그를 삭제하고 postgresql 서버를 다시 시작하는 bash 스크립트를 작성하십시오.

bash 스크립트를 작성하지 않고 로그 파일을 매월 덮어쓰려는 경우 또 다른 방법은 'log_filename='postgresql-%d.log'라는 간단한 절차를 수행하는 것입니다.

다시 시작할 때마다 덮어쓰지 않고 매일 추가하고 매월 덮어씁니다. 위의 모든 것은 postgreSQL의 기본 데이터베이스에서 솔루션을 기록합니다.

다른 사람도 기록하려면 해당 솔루션으로 시작한 후 다음을 실행해야 합니다.

ALTER DATABASE databasename
SET log_statement = 'all';

Postgres 로그를 탐색하는 동안 모든 쿼리 프로세스가 혼란스러워 보일 수 있습니다. 이 기사는 일을 더 쉽게 하기 위해 고안되었습니다. PostgreSQL에서 쿼리를 잘 기록할 수 있도록 단계별 프로세스를 제공했습니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - PostgreSQL Query