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 = onlog_directory = 'log'log_filename = 'postgresql-%M.log'log_truncate_on_rotation = onlog_rotation_age = 1min log_rotation_size = 100MB2、每小时一个文件,保留一天
log_destination = 'csvlog'
logging_collector = onlog_directory = 'log'log_filename = 'postgresql-%H.log'log_truncate_on_rotation = onlog_rotation_age = 1hour log_rotation_size = 100MB3、每天一个文件,保留一个月
log_destination = 'csvlog'
logging_collector = onlog_directory = 'log'log_filename = 'postgresql-%d.log'log_truncate_on_rotation = onlog_rotation_age = 1day log_rotation_size = 100MB4、每个月一个文件,保留一年
log_destination = 'csvlog'
logging_collector = onlog_directory = 'log'log_filename = 'postgresql-%m.log'log_truncate_on_rotation = onlog_rotation_age = 1month log_rotation_size = 100MB5、每天一个文件,保留一年
log_destination = 'csvlog'
logging_collector = onlog_directory = 'log'log_filename = 'postgresql-%m-%d.log'log_truncate_on_rotation = onlog_rotation_age = 1day log_rotation_size = 100MBPostgreSQL数据库运行日志的更多相关文章
- 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 ...
随机推荐
- 【每日一题】【双端降序队列Deque】2021年12月28日-239. 滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 来源:力扣(L ...
- 配置 DosBox
配置 DosBox DosBox 在高分辨的屏幕上窗口很小. 修改分辨率 Win7 及以上配置文件位于{system drive}:\Users\{username}\AppData\Local\DO ...
- Rust学习之旅(读书笔记):枚举 (Enum)
Rust学习之旅(读书笔记):枚举 (Enum) C 语言的枚举类型很弱,不如后来的语言,也不如之前的语言.在 C 语言里面枚举量就是一个名字,更方便的定义常量.今天读了<The Rust Pr ...
- 快速学会慢查询SQL排查
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/c56bd0c5.html 你好,我是测试蔡坨坨. 在往期文章中,我们聊过数据库基础知识,可参考「数据库基础,看完这篇就够了! ...
- f-strings: Python字符串处理的瑞士军刀
从 3.6 开始,Python 新增了一个格式化字符串的方法,称之为 f-string. 其用法就是在python原始字符串的基础上增加 f/F 前缀,以大括号 {} 标明被替换的字段. f-stri ...
- python循环结构之while循环
在python中,除了for循环,还有一个while循环 for循环:循环次数是明确了的 while循环:循环次数不确定,循环停止条件由用户自定义 # while语句结构 while 判断条件: 执行 ...
- python之字典(dict)创建与使用
字典(dict) 在其他语言中被称为哈希映射(hash map)或者相关数组,它是一种大小可变的键值对集,其中的key.value都是python对象. 特别注意: 1.字典中的key不能重复,key ...
- BalticOI 2004 Sequence 题解
题目链接在这里~ 对于序列\(\{a\}\),把每一个\(a_i\)减去一个\(i\),得到\(\{a'\}\)序列\(\{b\}\)同理. 因为\(b_1<b_2<...<b_n\ ...
- VUEX 使用学习三 : mutations
转载请注明出处: 在 Vuex 中 store 数据改变的唯一方法就是提交 mutations.mutations里面装着一些改变数据方法的集合,这是Vuex 设计很重要的一点,就是把处理数据逻辑方法 ...
- 使用Rancher管理K3s
rancher中国镜像站地址 https://rancher-mirror.oss-cn-beijing.aliyuncs.com/ https://rancher-mirror.rancher.cn ...