1、查看postgresql.conf文件的配置,看日志文件在哪
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = o
2、日志的分类
pg_log(数据库运行日志) 内容可读 默认关闭的,需要设置参数启动
pg_xlog(WAL 日志,即重做日志) 内容一般不具有可读性 强制开启
pg_clog(事务提交日志,记录的是事务的元数据) 内容一般不具有可读性 强制开启
3、各个日志的作用
(1)pg_log 这个日志一般是记录服务器与DB的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息,诸如此类。该日志有.csv格式和.log。
建议使用.csv格式,因为它一般会按大小和时间自动切割,毕竟查看一个巨大的日志文件比查看不同时间段的多个日志要难得多。
pg_log是可以被清理删除,压缩打包或者转移,同时并不影响DB的正常运行。当我们有遇到DB无法启动或者更改参数没有生效时,第一个想到的就是查看这个日志。
(2)pg_xlog 这个日志是记录的Postgresql的WAL信息,也就是一些事务日志信息(transaction log)。默认单个大小是16M,源码安装的时候可以更改其大小(./configure --with-wal-segsize=target_value 参数,即可设置)这些日志会在定时回滚恢复(PITR), 流复制(Replication Stream)以及归档时能被用到,这些日志是非常重要的,记录着数据库发生的各种事务信息,不得随意删除或者移动这类日志文件,不然你的数据库会有无法恢复的风险。
补充:postgresql 日志中报xlog目录中文件找不到
通过pg自己的命令强制重置事务日志 , 命令行进到pg的bin目录
输入 pg_resetxlog -f %pgdata%
其中-f为强制, %pgdata%需根据现场环境具体到data目录
恢复后数据库的所有用户密码会被重置掉,配置成免密登录pg,将密码进行修改
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。