像其它数据库一样,PostgreSQL也有自己的日志系统,postgresql 日志方面有非常全面的设置参数,这篇不准备仔细的介绍PG的日志参数,只介绍日志分析的一种方法,即可以将日志文件内容导入到数据库表里,便于分析日志。
CSV日志文件目录
日志的目录可以通过参数 log_directory 来设置,下面是我的参数设置。
1 |
log_directory = '/var/applog/pg_log' |
查看日志文件
1 |
[postgres@pg_log]$ ll /var/applog/pg_log |
CSV日志文件内容
1 |
2011-03-15 00:07:03.513 CST,"wapportal","wapportal_216",4137,"172.16.3.43:59356",4d7e361f.1029,3,"idle",2011-03-14 23:37:03 CST,,0,LOG,00000,"disconnection: session time: 0:30:00.086 user=wapportal database=wapportal_216 host=172.16.3.43 port=59356",,,,,,,,,"" |
上面两条是 postgresql-2011-03-15_000000.csv 日志文件的部分内容 ,由于日志文件的可读性较差,于是可以通过下面方法将CSV日志导入到数据库表里。详细如下
将CSV日志导入数据库表
调整 postgresql.conf 参数,如下:
1 |
log_destination = 'csvlog' |
这两个参数修改后,PG SERVER 需要重启。
创建日志记录表
1 |
CREATE TABLE postgres_log |
备注:创建日志表 postgres_log 用来保存 CSV日志数据。
导入操作系统 csv 日志到表 postgres_log 表
1 |
skytf=# copy skytf.postgres_log from '/var/applog/pg_log/postgresql-2011-03-14_000000.csv' with csv; |
备注:文件形式导入导出数据需要以超级用户 postgres 连接到目标库。
常用日志分析SQL
1 |
skytf=# select min(log_time),max(log_time) from skytf.postgres_log; |
为了显示方便,上面只取一条记录。
总结
当数据库出现异常需要详细分析日志文件时,上面的方法提供了一个非常有效的方式,将数据库日志导入到表里,能够更准确,方便地分析数据库日志。
原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/236379.html