Greenplum 日志管理
Greenplum的日志参数基本沿用了postgres的日志参数,主要包括以下三个部分:
日志位置可以输出到stderr, csvlog, syslog
使用日志收集器,其是一个收集发送到stderr日志的后台进程,收集日志后该进程会将日志重定向到日志文件
日志路径,需要logging_collector开启
日志名字/模式,需要logging_collector开启,采用strftime模式设置
日志文件权限,需要logging_collector开启,采用八进制,默认0600,代表服务拥有者拥有读写权限,
日志切换间隔,需要logging_collector开启,确认单个日志文件的时间长度,单位分钟,默认是24小时
日志切换大小,需要logging_collector开启,确认单个日志文件的最大大小,单位kb,默认10M
使能同名日志的truncate/overwrite, 需要logging_collector开启,注意:truncate只会基于时间的日志切换,由文件大小或者数据库重启导致的日志切换不会触发日志truncate
设置七日日志轮转:log_filename: server_log.%a
log_rotation_age:1440
log_truncate_on_rotation: on
控制写入日志等级,有效值有
DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC,默认值为warning,注意其和客户端等级client_min_messages略有区别
控制触发服务器日志记录的sql statement,等级和log_min_message相同,但是默认值为ERROR,即当sql statement造成了error或以上级别的错误后,该sql将被记录
当一条statement持续时间超过该参数后,此条statement将被记录,可用于控制慢查询日志的记录,默认单位微秒
和log_min_duration_statement差不多,但是一个采样子集,主要用在traffic过高的情况下
顾名思义,采样率,范围0-1,默认为1
以事务为视角的采样率,它对于事务采样帮助比较大
连接数据库的应用名
使能不同的调试输入,parse输出解析树,重写输出以及执行计划,这些消息位于LOG层
故名思意,增加缩进,打印的更好看
记录checkpoint点,同时包含写入的缓冲数据以及写入时间等
记录每一次对服务器的尝试连接
记录连接断开时间和持续时间
记录每一个完成的statement的持续时间
日志的详细等级,VERBOSE甚至会打印源代码文件名,函数名和行号
记录客户端主机的主机名
日志行前缀
当一个session等待超过deadlock-time后,将会产生一条锁等待日志,这个参数对于诊断锁等待造成的性能问题很有用
确定非错误statement的绑定参数的可打印长度
确定错误statement的绑定参数的可打印长度
控制记录哪种类型的SQL,ddl记录所有数据定义语句,mod记录所有ddl+dml
记录每一个replication命令
记录临时文件名和尺寸,只记录大小大于该参数的临时文件
设置服务器日志记录的时区
gp_toolkit是greenplum的一个管理schema,我们可以使用其中的几个视图查看数据库日志,gp_toolkit不在默认的搜索路径中,需要手动添加。
该视图使用外部表读取master主机上的日志文件以报告sql命令的执行时间,该视图需要超级用户权限,有一点不方便的是,它不能查看具体是哪一条sql语句。
该视图使用外部表读取主机日志(master,segments,mirrors)并列出和当前数据库相关的日志条目,该视图需要超级用户权限,需要查询segment日志可以使用该视图
该视图是master日志文件的子集,信息比较简明:
该视图是最全面的一个日志视图,包括整个系统的所有日志条目,日志条目通过session id和logsession的组合主键进行唯一区分,列和gp_log_database差不多,区别是gp_log_database显示当前连接库的日志,而gp_log_system显示所有库的日志信息
默认情况下pg_clog文件夹下日志会逐渐增加,日志参数log_truncate_on_rotation
只适用于基于时间的日志切换,在没有日志归档的情况,如果在基于时间切换日志模式下,某时间段内日志膨胀,则可能导致磁盘耗尽,因此需要使用日志归档或者启用linux定时任务。
echo ‘* * * * * /root/gp_log_clean.sh‘ >> /var/spool/cron/root 开启定时清理任务
gp_log_clean.sh:
#!/bin/sh
logDir=/data/master/gpseg-1/pg_log
declare -i fileNumber=$(ls ${logDir}/*csv | wc -l)
echo "fileNumber = $fileNumber"
if [ ${fileNumber} -gt 7 ]; then
echo "now do log clean"
echo $(ls -t ${logDir}/*csv | tail -n 1)
rm -f $(ls -t ${logDir}/*csv | tail -n 1)
fi
原文:https://www.cnblogs.com/flash-flash/p/14719072.html