墨墨导读:本文主要从日志文件、参数文件、控制文件、数据文件、redo日志(WAL)、后台进程这六个方面来讨论PostgreSQL的结构。
7月16日晚20:30-21:30,云和恩墨大讲堂邀请到了云和恩墨东区技术顾问成旸老师为我们分享Oracle中统计信息的相关知识。成老师将带我们由点到面,系统地了解统计信息。线上直播报名链接:https://cs.enmotech.com/event/53(或者点击“阅读原文”立即报名)
一、引言
PostgreSQL是最像Oracle的开源数据库,我们可以拿MySQL和Oracle来比较学习它的体系结构,比较容易理解。本文会讨论pg的如下结构:
日志文件
参数文件
控制文件
数据文件
redo日志(WAL)
后台进程
PostgreSQL的主要结构如下:
二、日志文件
2.1 日志文件种类
1)$PGDATA/log 运行日志(pg10之前为$PGDATA/pg_log)
2)$PGDATA/pg_wal 重做日志(pg10之前为$PGDATA/pg_xlog)
3)$PGDATA/pg_xact 事务提交日志(pg10之前为$PGDATA/pg_clog)
4)服务器日志,可以在启动的时候指定,比如pg_ctl start -l ./alert.log
2.2 运行日志
2.2.1 运行日志参数
运行日志主要相关的参数如下,默认没有开启的话没有log目录,开启后会自动生成。
参数 |
可选值/说明 |
log_destination = 'csvlog' |
# stderr, csvlog, syslog, and eventlog ,csvlog requires logging_collector to be on 一般选择这个,可以将csv日志导入数据库中查看 |
logging_collector=on |
# Enable capturing of stderr and csvlog into log files 选scv格式的日志必须设置这个参数on,修改需要重启 |
log_directory = 'log' |
日志输出目录 |
log_filename='postgresql-%Y-%m-%d_%H%M%S.log |
日志文件名字格式 |
log_file_mode=0600 |
# creation mode for log files 日志文件权限 |
log_truncate_on_rotation = on |
设置重用日志 |
log_rotation_age = 1d |
多长时间重用日志 |
log_rotation_size = 10MB |
日志达到多大重用 |
log_min_messages=warning |
#debug5,debug4,debug3,debug2,debug1,info,notice,warning,error,log,fatal,panic |
log_min_duration_statement = 60 |
慢sql记录(超过多长时间的sql) |
log_checkpoints = on |
记录checkpoint操作 |
log_connections = on |