Postgresql的日志配置

摘要:
我查看了pg的日志配置。如果设置为打开,pg可以记录相关日志。如果是生产环境,建议使用7dlog d_rotation_Age=1d#Automaticcrotationologfileswill#单个日志的大小,客户端的性能损失越大_min_messages=warning#valuesinordofdecreasingdetail:
背景

  公司的项目中使用了postgresql(简称pg)作为其数据库管理系统,前两天环境突然崩溃了,页面无法打开。经过排查,我发现是数据库所在机器磁盘满了,通过目录和文件排序,原来是pg的日志太多(大约保留了大半年的日志在磁盘上没有被清理)。

  我看了下pg的日志配置,发现基本都是用的默认配置,日志滚动没有开启,于是乎做了下相关配置优化后对pg进行重启,最后看了pg的日志滚动,恢复正常了。以下是我梳理的关于pg的日志配置项。

配置详解

配置文件:postgresql.conf

配置1:日志开启与关闭

默认为off,设置为on则pg可以记录相关日志,建议打开,否则在数据库出现异常时候,没有日志来定位具体问题

# This is used when logging to stderr:

logging_collector = on # Enable capturing of stderr and csvlog

# into log files. Required to be on for

# csvlogs.

# (change requires restart)

配置2:日志滚动策略 

# These are only used if logging_collector is on:

#配置日志目录,默认为pg_log即可

log_directory = 'pg_log' # directory where log files are written,

# can be absolute or relative to PGDATA

#pg日志文件名及其扩展名,默认即可

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,

# can include strftime() escapes

#pg日志文件的权限,默认即可

log_file_mode = 0600 # creation mode for log files,

#开启日志滚动阶段,这里需要设置为on

log_truncate_on_rotation = on # If on, an existing log file with the

#日志保留天数,这里看实际环境,如果是测试建议1d,如果是生产环境建议7d

log_rotation_age = 1d # Automatic rotation of logfiles will

#单个日志大小,默认100MB即可,比较标准的配置

配置3:日志打印时机 

#发送给客户端的消息级别,建议warning即可,日志等级越低,打印的内容越多,性能上越有损耗

client_min_messages = warning # values in order of decreasing detail:

# debug5

# debug4

# debug3

# debug2

# debug1

# log

# notice

# warning

# error

#写到数据库日志文件中的消息的级别,建议warning即可,日志等级越低,打印的内容越多,性能上越有损耗

log_min_messages = warning # values in order of decreasing detail:

# debug5

# debug4

# debug3

# debug2

# debug1

# info

# notice

# warning

# error

# log

# fatal

# panic

#是否记录导致数据库出现错误的SQL语句,建议warning即可,日志等级越低,打印的内容越多,性能上越有损耗

log_min_error_statement = error # values in order of decreasing detail:

# debug5

# debug4

# debug3

# debug2

# debug1

# info

# notice

# warning

# error

# log

# fatal

# panic (effectively off)

配置4:数据库统计监控

#log_statement_stats为on则会开启log_parser_stats,log_planner_stats,log_executor_stats这三个选项,生产环境不建议开启,建议测试环境开启,用于定位问题。

#log_parser_stats = off

#log_planner_stats = off

#log_executor_stats = off

#log_statement_stats = off 

配置5:慢sql记录配置

#执行sql时间为2s以上的sql都会被记录下来

log_min_duration_statement = 2s

以上配置再修改完之后,均需要重启pg生效。

博主:测试生财

座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过读书理财奔向财务自由。

csdn:https://blog.csdn.net/ccgshigao

博客园:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

免责声明:文章转载自《Postgresql的日志配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇从零开始学动态规划(转)关于主流播放器蛋疼的联网功能的研究下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

laravel中migration 数据迁移

简介 数据库迁移就像是数据库的版本控制,可以让你的团队轻松修改并共享应用程序的数据库结构。迁移通常与 Laravel 的数据库结构生成器配合使用,让你轻松地构建数据库结构。如果你曾经试过让同事手动在数据库结构中添加字段,那么数据库迁移可以让你不再需要做这样的事情。 Laravel Schema facade 对所有 Laravel 支持的数据库系统提供了创...

C/C++中Sqlite使用简介

一、简介 SQLite是一个基于文件的轻量级数据库,但功能还挺强,速度也很快,对于小型数据库应用开发绝对够用了。使用起来也非常方便,下面的介绍可以看出来,使用起来真的非常简单。 二、官方网站 Sqlite的官方网站www.sqlite.org,在该网站可以下载最新的sqlite版本。 三、辅助工具工具 Sqlite数据库的管理工具有SQLiteMan...

使用 Python 和 Oracle 数据库实现高并发性

随着趋势发展的核心转向更多而不是更快发展,最大限度地提高并发性的重要性日益凸显。并发性使得编程模式发生了新的转变,可以编写异步代码,从而将多个任务分散到一组线程或进程中并行工作。如果您不是编程新手并且很熟悉 C 或 C++,您可能已经对线程和进程有所了解,并且知道它们之间的区别。在进行并发编程时,线程提供了进程的轻量级替代物,在大多数情况下多线程较多进程更...

将txt、csv等文本文件导入Hive

将txt、csv等文本文件导入Hive 目录 将txt、csv等文本文件导入Hive 00.数据在虚拟机外 01.启动hadoop、hdfs 02.将文件放置在hdfs目录下 03.登录hive并进入指定数据库 04.根据文件创建表 05.执行导入语句 00.数据在虚拟机外 如果数据在虚拟机内,请跳过此步,直接执行接下来的操作。 推荐使用Sec...

mongodb权限管理

   说到mongodb就得先谈谈mongodb的用户组,和传统的关系型数据库不一样,mongodb并没有在创建应用时就要求创建权限管理组,所以类似于Robomongo这样的数据库可视化工具在创建connect时直接输入相应的address就可以直接访问和操作了,非常的方便,如下图。      在谈用户组之前先简单的说说如何安装吧。   1.新建 /ap...

Subsonic 介绍

原文:Introduction to SubSonic 介绍了SubSonic,一个数据层构建器导言一 个易维护的应用程序,不同的类之间有不同的分工,通常分为界面层、业务层和数据访问层。虽然这一技术有利于更好地组织应用,一些开发人员不愿这么做。创建 一个可靠的和快速的数据访问层需要一些规划,一旦你创建了一个,他们看起来都是相似的。SubSonic帮助你基于...