모든 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_collector
및 log_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에서 쿼리를 잘 기록할 수 있도록 단계별 프로세스를 제공했습니다.
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