PostgreSQL数据库运行日志
PostgreSQL运行日志可以实现日志输出记录,默认是没有启动记录。这个日志一般是记录服务器与DB的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息,诸如此类。
一、常用日志参数
项目 | 默认值 | 设定值 | 说明 |
---|---|---|---|
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 | 记录Checkpoint信息 |
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=>不记录、ddl=>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语句状态
二、日志设置方式
1、启动pg_log配置与日志参数
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;
2、记录执行慢的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'
;
3、监控数据库中长时间的锁
ALTER
SYSTEM
SET
log_lock_waits =
on
;
4、记录DDL操作
ALTER
SYSTEM
SET
log_statement =
'ddl'
;
5、参数查询
select
name
,setting,short_desc
from
pg_settings
where
name
like
'log_%'
;
三、CSV日志导入到数据库分析
1、创建日志表
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)
);
2、CSV日志加载
\copy postgres_log
from
‘<CSV日志路径>'
with
csv;
3、数据检索测试
// 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
四、日志保留周期
通常我们会对日志进行定期保留以保证不会撑爆磁盘容量,此时需要考虑日志保留周期。
核心参数:
项目 | 默认值 | 设定值 | 说明 |
---|---|---|---|
log_truncate_on_retation | off | off | log_rotation_age触发切换下一个日志,存在则附加,否则将覆盖 |
log_rotation_age | 1440 | 7d | 单个日志文件生存周期,默认1天 |
log_rotation_size | 10240 | 100MB | 单个日志文件大小 |
1、按照每分钟创建文件,保留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
2、每小时一个文件,保留一天
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
3、每天一个文件,保留一个月
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
4、每个月一个文件,保留一年
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
5、每天一个文件,保留一年
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
PostgreSQL数据库运行日志的更多相关文章
- ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...
- PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库
最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...
- TPC-H生成.tbl文件导入postgresql数据库的坑
数据库project好好的不用主流的MySQL和Microsoft server而要求用听都没听过的postgresql (当然,可能你三个都没听过) 这里的坑主要是把生成的那八张.tbl的表导入pg ...
- PowerDesigner反向工程PostgreSQL数据库
1. 环境准备: a) 安装PowerDesigner,以PowerDesigner15.1为例 b) 安装java jdk,以jdk-7-windows-i586为例 ...
- 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...
- Enterprise Architect的共享Respository设置,postgresql数据库
Enterprise Architect有一个很实用的共享,在设计UML图的时候,可以连接到一个数据库服务器,将所有的画图数据共享在上面,所有连到这个server的人,都可以看到 别人的图,图中的元素 ...
- PostgreSQL数据库基本配置
一.安装 首先安装PostgreSQL客户端: sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器: sudo apt-get inst ...
- C#访问PostGreSQL数据库的方法 http://www.jb51.net/article/35643.htm
这次的项目中的一个环节要求我把PostGreSQL数据取出来,然后放到SqlServer里,再去处理分析. http://www.jb51.net/article/35643.htm - 我对Post ...
- C#访问postgresql数据库
最近开始做C#的DotNet的工作,因为对PostgreSQL数据库比较有兴趣,所以自己研究了一下如何访问PostgreSQL的 数据库的问题. 1.为了访问PostgreSQL数据库,需要从pgfo ...
- openerp安装记录及postgresql数据库问题解决
ubuntu-14.04下openerp安装记录1.安装PostgreSQL 数据库 a.安装 sudo apt-get install postgresql 安装后ubu ...
随机推荐
- matlab狄拉克锥的三维图
石墨烯(graphene)中的狄拉克锥(Dirac cone)图形.直接按照能级公式绘图,公式参考[1]中 energy of the electrons 公式. %matlab代码 clear; g ...
- mysql游标最后一行重复问题
今天用调用存储过程时发现数据有点问题,和预期不一致 经排查,发现是游标在遍历过程中重复遍历了,或者说是对游标下标的判断有Bug 调试后发现是游标使用方式不正确 应该在循环外先对游标进行一次取值操作,在 ...
- P5690 [CSP-S2019 江西] 日期
简要题意 给你一个格式为 \(\texttt{MM-DD}\) 的日期.你每一次可以更改一个整数,花费 \(1\) 的代价.求将该日期改为一个合法的日期的最小代价.(注:\(2\) 月视为 \(28\ ...
- 单例 pickle模块
今日内容 单例模式实现的多种方式 方式一: class C1: __instance = None def __init__(self,name,age): self.name = name self ...
- 揭开华为云CodeArts TestPlan启发式测试设计神秘面纱!
摘要:质量是产品的生死线. 本文分享自华为云社区<揭开华为云CodeArts TestPlan启发式测试设计神秘面纱!>,作者:华为云PaaS服务小智 . 2019年12月20日,是美国波 ...
- drf基础:1、web应用模式、API接口、接口测试工具
drf入门 一.web应用模式 web的应用模式共分为两种,前后端不分离.前后端分离 1.前后端混合 之前所写的bbs项目就是前后端不分离,后端人员在开发过程中使用模板语法,前后端都由一个人员 ...
- 对于Java平台的理解
谈谈你对 Java 平台的理解?"Java 是解释执行",这句话正确吗? Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的"一处编译,处处运行& ...
- MyBatis使用四(查询详解)
本文主要讲述如何在mybatis中进行查询操作[详解] 一. 查询User对象 1.查询单个对象User SelectUser接口声明如下 // 主要条件是使用id public interface ...
- 通过一个示例形象地理解C# async await 非并行异步、并行异步、并行异步的并发量控制
前言 接上一篇 通过一个示例形象地理解C# async await异步 我在 .NET与大数据 中吐槽前同事在双层循环体中(肯定是单线程了)频繁请求es,导致接口的总耗时很长.这不能怪前同事,确实难写 ...
- Node.js学习笔记----day04之学生信息管理系统
认真学习,认真记录,每天都要有进步呀!!! 加油叭!!! 一.起步 项目结构 安装需要的包 初始化显示index.html index.html var express = require('expr ...