PostgreSQL 로그 정보 가 있 는 원본 파일 과 줄 의 인 스 턴 스 를 인쇄 합 니 다.
10148 단어 PostgreSQL인쇄 하 다.로그행수
postgres.conf 에서 log 정보의 불필요 한 단 계 는"default(기본 값)"입 니 다.terse:더 간단 한 로그 정 보 를 표시 합 니 다.verbose:더 많은 로그 정 보 를 표시 합 니 다(즉,"파일 이름과 줄 수 를 추가 합 니 다).
#log_error_verbosity = default # terse, default, or verbose messages
아래 의"verbose"로 수정 하면 됩 니 다.
log_error_verbosity = verbose # terse, default, or verbose messages
수정 후 인 스 턴 스 를 다시 시작 하면 효력 이 발생 합 니 다.결 과 는 다음 과 같 습 니 다.로그 정보 에'파일 이름'과'줄 수'정보 가 첨부 되 어 있 습 니 다.
2020-03-02 09:34:41.800 CST [9019] LOG: 00000: listening on IPv6 address "::1", port 7433
2020-03-02 09:34:41.800 CST [9019] LOCATION: StreamServerPort, pqcomm.c:593
2020-03-02 09:34:41.800 CST [9019] LOG: 00000: listening on IPv4 address "127.0.0.1", port 7433
2020-03-02 09:34:41.800 CST [9019] LOCATION: StreamServerPort, pqcomm.c:593
2020-03-02 09:34:41.801 CST [9019] LOG: 00000: listening on Unix socket "/tmp/.s.PGSQL.7433"
2020-03-02 09:34:41.801 CST [9019] LOCATION: StreamServerPort, pqcomm.c:587
2020-03-02 09:34:41.814 CST [9020] LOG: 00000: database system was shut down at 2020-03-02 09:34:24 CST
2020-03-02 09:34:41.814 CST [9020] LOCATION: StartupXLOG, xlog.c:6291
2020-03-02 09:34:41.819 CST [9019] LOG: 00000: database system is ready to accept connections
2020-03-02 09:34:41.819 CST [9019] LOCATION: reaper, postmaster.c:2938
비고:상기 verbose 방법 은 debug 모드 에서 만 유효 합 니 다.release 에 파일 이름과 줄 수 에 관 한 정보 가 전혀 없 기 때 문 입 니 다.추가:PostgreSQL 데이터베이스 실행 로그
PostgreSQL 에는 세 가지 로그 가 있 습 니 다.
1、pg_wal(WAL 로그,즉 로 그 를 다시 만 드 는 것)내용 은 읽 을 수 없 는 강제 오픈 입 니 다.
2、pg_log(데이터베이스 실행 로그)내용 을 읽 을 수 있 습 니 다.기본 으로 닫 힌 것 은 인자 시작 을 설정 해 야 합 니 다.
3、pg_clog(트 랜 잭 션 제출 로그,트 랜 잭 션 의 메타 데이터 기록)내용 은 읽 을 수 없 는 강제 오픈 입 니 다.
PostgreSQL 실행 로 그 는 로그 출력 기록 을 실현 할 수 있 습 니 다.기본적으로 시작 기록 이 없습니다.이 로 그 는 일반적으로 서버 와 DB 의 상 태 를 기록 합 니 다.예 를 들 어 각종 Error 정보,위치 추적 이 느 린 SQL 조회,데이터 뱅 크 의 시작 닫 기 정보,checkpoint 가 너무 자주 발생 하 는 등 경고 정보 등 이 있 습 니 다.
PostgreSQL 상용 로그 인자
항목
기본 값
설정 값
설명 하 다.
logging_collector
off
on
로그 수집 기능 시작 여부
log_destination
stderr
csvlog
로그 수집 저장 방식
log_directory
log
pg_log
로그 수집 저장 경로
log_filename
postgresql-%Y-%m-%d.log
postgresql-%Y-%m-%d_%H%M%S.log
로그 파일 이름 형식
log_timezone
RPC
RPC
로그 시간 대
log_rotation_age
1440
7d
단일 로그 파일 생존 주기,기본 1 일
log_rotation_size
10240
100MB
단일 로그 파일 크기
log_truncate_on_retation
off
off
log_rotation_age 가 다음 로 그 를 전환 합 니 다.존재 하면 추가 합 니 다.그렇지 않 으 면 덮어 씁 니 다.
log_min_messages
warning
warning
로그 출력 단계
log_min_duration_statement
-1
3000
-1 사용 할 수 없 음 을 표시 합 니 다.0 은 모든 SQL 문장 과 그들의 소모 시간 을 기록 합 니 다.>0 은 이 값(ms)을 초과 하 는 SQL 문장 만 기록 합 니 다.
log_checkpoints
off
on
체크 포인트 정보 기록
log_connections
off
on
연결 로그 기록 여부
log_disconnections
off
on
연결 끊 기 로 그 를 기록 할 지 여부
log_duration
off
off
모든 SQL 문 구 를 실행 하 는 데 걸 리 는 시간 을 기록 합 니 다.
log_line_prefix
%m[%p]
%e: %t [%p]: [%l-1] user = %u,db = %d,remote = %r app = %a
로그 출력 형식;
log_lock_waits
off
on
세 션 대기 시간 이 deadlock 을 초과 할 때 제어 합 니 다.timeout 이 잠 겼 을 때 로그 정보 가 생 겼 는 지 여부 입 니 다.잠 금 대기 문제 가 있 는 지 판단 할 수 있 습 니 다.
log_statement
none
ddl
어떤 SQL 문 구 를 기록 하 는 지 제어 합 니 다.선택 값:none=>기록 하지 않 음,dl=>Create table 같은 것,mod=>DML 구문,all=>모든 것 을 기록 합 니 다.
log_line_prefix 매개 변수 설명:
%a = application name
%u = user name
%d = database name
%r = remote host and port
%h = remote host
%p = process ID
%t = timestamp without milliseconds
%m = timestamp with millisecond
%n = timestamp with milliseconds (as a Unix epoch)
%i = command tag
%e = SQL state SQL
로그 설정 방식시동 pglog 설정 과 로그 인자
ALTER SYSTEM SET log_destination = 'csvlog';
ALTER SYSTEM SET logging_collector = on;
ALTER SYSTEM SET log_directory = 'pg_log';
ALTER SYSTEM SET log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log';
ALTER SYSTEM SET log_rotation_age = '7d';
ALTER SYSTEM SET log_rotation_size = '100MB';
ALTER SYSTEM SET log_min_messages = warning;
실행 이 느 린 SQL 문 구 를 기록 합 니 다.
ALTER SYSTEM SET log_min_duration_statement = 3000;
ALTER SYSTEM SET log_checkpoints = on;
ALTER SYSTEM SET log_connections = on;
ALTER SYSTEM SET log_disconnections = on;
ALTER SYSTEM SET log_duration = off;
ALTER SYSTEM SET log_line_prefix = '%e: %t [%p]: [%l-1] user = %u,db = %d,remote = %r app = %a';
데이터베이스 의 장시간 잠 금 을 감시 하 다.
ALTER SYSTEM SET log_lock_waits = on;
기록 DDL 조작
ALTER SYSTEM SET log_statement = 'ddl';
매개 변수 조회
select name,setting,short_desc from pg_settings where name like 'log_%';
서비스 재 부팅&Reload 파라미터
//
pg_ctl restart -m fast -D /pgdata/11.2/data
// Reload
select pg_reload_conf();
CSV 로 그 를 데이터베이스 분석 에 가 져 오기:\#데이터 시트 만 들 기
CREATE TABLE postgres_log
(
log_time timestamp(3) with time zone,
user_name text,
database_name text,
process_id integer,
connection_from text,
session_id text,
session_line_num bigint,
command_tag text,
session_start_time timestamp with time zone,
virtual_transaction_id text,
transaction_id bigint,
error_severity text,
sql_state_code text,
message text,
detail text,
hint text,
internal_query text,
internal_query_pos integer,
context text,
query text,
query_pos integer,
location text,
application_name text,
PRIMARY KEY (session_id, session_line_num)
);
:\#CSV 로그 불 러 오기
\copy postgres_log from ‘<CSV >' with csv;
:\#데이터 검색 테스트
// csv
select min(log_time),max(log_time) from postgres_log;
min | max
----------------------------+---------------------------
2019-12-11 23:18:17.334+08 | 2019-12-11 23:30:49.04+08
(1 )
//
select log_time,database_name,user_name,application_name,message from postgres_log where message like '%duration%';
log_time | database_name | user_name | application_name | message
----------------------------+---------------+-----------+------------------+-----------------------
2019-12-11 23:18:33.559+08 | pgbench | pgbench | pgbench | duration: 36.286 ms
2019-12-11 23:18:33.573+08 | pgbench | pgbench | pgbench | duration: 13.944 ms
2019-12-11 23:18:33.581+08 | pgbench | pgbench | pgbench | duration: 7.953 ms
2019-12-11 23:18:34.561+08 | pgbench | pgbench | pgbench | duration: 976.103 ms
SQL 통계 정보pg_stat_statements 는 SQL 의 많은 정 보 를 통계 하여 SQL 의 성능 을 분석 하 는 데 편리 합 니 다.
:\#매개 변수 설정
alter system set shared_preload_libraries = pg_stat_statements;
:\#서비스 재 부팅&Reload 매개 변수
pg_ctl restart -m fast -D /pgdata/11.2/data
:\#확장 표 만 들 기
CREATE EXTENSION pg_stat_statements;
:\#조회 TOP 10
SELECT query, calls, total_time, (total_time/calls) as average ,rows,
100.0 * shared_blks_hit /nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY average DESC LIMIT 10;
※집계 결과 가 계속 나 오고 있어 재 개 해도 0 이 되 지 않 습 니 다.다음 명령 을 통 해 수 동 으로 제거 할 수 있 습 니 다.
select pg_stat_statements_reset() ;
로그 보존 주기보통 디스크 용량 이 터 지지 않도록 로 그 를 정기 적 으로 보관 합 니 다.이 때 는 로그 보존 주 기 를 고려 해 야 합 니 다.
핵심 매개 변수:
항목
기본 값
설정 값
설명 하 다.
log_truncate_on_retation
off
off
log_rotation_age 가 다음 로 그 를 전환 합 니 다.존재 하면 추가 합 니 다.그렇지 않 으 면 덮어 씁 니 다.
log_rotation_age
1440
7d
단일 로그 파일 생존 주기,기본 1 일
log_rotation_size
10240
100MB
단일 로그 파일 크기
분당 파일 을 만 들 고 1 시간 동안 보관 합 니 다:
log_destination = 'csvlog'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%M.log'
log_truncate_on_rotation = on
log_rotation_age = 1min
log_rotation_size = 100MB
시간 당 한 개의 파일 을 하루 동안 보관 합 니 다.
log_destination = 'csvlog'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%H.log'
log_truncate_on_rotation = on
log_rotation_age = 1hour
log_rotation_size = 100MB
매일 한 개의 파일 을 한 달 동안 보관 합 니 다.
log_destination = 'csvlog'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%d.log'
log_truncate_on_rotation = on
log_rotation_age = 1day
log_rotation_size = 100MB
매달 하나의 서 류 를 1 년 간 보관 합 니 다.
log_destination = 'csvlog'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%m.log'
log_truncate_on_rotation = on
log_rotation_age = 1month
log_rotation_size = 100MB
매일 하나의 파일 을 1 년 간 보관 합 니 다.
log_destination = 'csvlog'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%m-%d.log'
log_truncate_on_rotation = on
log_rotation_age = 1day
log_rotation_size = 100MB
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redmine 데이터베이스를 MySQL에서 PostgreSQL로 마이그레이션 (보충)Redmine 의 Database 를 MySQL 로 운용하고 있었습니다만, MySQL 5.6 이상이나 MariaDB 에는 , , 이러한 티켓이 수년 동안 방치된 상황을 감안하여, PostgreSQL로 마이그레이션하기...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.