文档章节

PostgreSQL的日志类型

kenyon_君羊
 kenyon_君羊
发布于 2012/12/21 20:18
字数 1269
阅读 4450
收藏 14

刚开始学习postgres的时候,可能对PostgreSQL中的日志概念比较模糊,到底有多少种日志,哪些日志是能删除的,各自又记录什么样的功能。

PostgreSQL中有三种日志,pg_log,pg_xlog和pg_clog。

一.安装路径
这三种数据库后两者一般的安装路径是$PGDATA/下面的文件夹下,前者默认路径是$PGDATA/pg_log,通常可自己定义路径和文件名


[postgres@testdb ~]$ cd $PGDATA
[postgres@testdb pgdata]$ ls -l
total 88
drwx------ 10 postgres kenyon  4096 Dec 12 15:58 base
drwx------  2 postgres kenyon  4096 Dec 13  10:13 global
drwx------  2 postgres kenyon  4096 Jun 21   2012 pg_clog
-rw-------  1 postgres  kenyon  4739 Aug 10  09:31 pg_hba.conf
-rw-------  1 postgres  kenyon  1636 Jun 21   2012 pg_ident.conf
drwx------  4 postgres kenyon  4096 Jun 21   2012 pg_multixact
drwx------  2 postgres kenyon  4096 Dec 12  18:24 pg_notify
drwx------  2 postgres kenyon  4096 Jun 21   2012 pg_serial
drwx------  2 postgres kenyon  4096 Dec 21  20:17 pg_stat_tmp
drwx------  2 postgres kenyon  4096 Dec 14  15:01 pg_subtrans
drwx------  2 postgres kenyon  4096 Jun 21   2012 pg_tblspc
drwx------  2 postgres kenyon  4096 Jun 21   2012 pg_twophase
-rw-------  1 postgres  kenyon     4 Jun 21     2012 PG_VERSION
drwx------  3 postgres kenyon  4096 Dec 13  15:20 pg_xlog
-rw-------  1 postgres  kenyon 19439 Dec 13  18:23 postgresql.conf
-rw-------  1 postgres  kenyon    52 Dec 12   18:24 postmaster.opts
-rw-------  1 postgres  kenyon    73 Dec 12   18:24 postmaster.pid

[postgres@testdb pgdata]$more postgresql.conf
log_destination = 'csvlog'
logging_collector = on
log_directory = '/home/postgres/pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'


二 .用处
pg_log
这个日志一般是记录服务器与DB的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息,诸如此类。linux自带的路径一般在/var/log/postgres下面。该日志有.csv格式和.log。个人建议用前一种,因为一般会按大小和时间自动切割,毕竟查看一个巨大的日志文件比查看不同时间段的多个日志要难得多。另外这种日志是可以被清理删除,压缩打包或者转移,同时并不影响DB的正常运行。当我们有遇到DB无法启动或者更改参数没有生效时,第一个想到的就是查看这个日志。
一般的结果如下:
[postgres@testdb pg_log]$ ll
total 3996
-rw------- 1 postgres kenyon   15632   Dec 12 21:59 postgresql-2012-12-12_182439.csv
-rw------- 1 postgres kenyon       0      Dec 12 18:24 postgresql-2012-12-12_182439.log
-rw------- 1 postgres kenyon 3990717 Dec 13 23:48 postgresql-2012-12-13_000000.csv
-rw------- 1 postgres kenyon       0     Dec 13 00:00 postgresql-2012-12-13_000000.log
-rw------- 1 postgres kenyon   27518  Dec 14 17:46 postgresql-2012-12-14_000000.csv
-rw------- 1 postgres kenyon       0     Dec 14 00:00 postgresql-2012-12-14_000000.log
-rw------- 1 postgres kenyon       0     Dec 15 00:00 postgresql-2012-12-15_000000.csv
-rw------- 1 postgres kenyon       0     Dec 15 00:00 postgresql-2012-12-15_000000.log
-rw------- 1 postgres kenyon       0     Dec 16 00:00 postgresql-2012-12-16_000000.csv
-rw------- 1 postgres kenyon       0     Dec 16 00:00 postgresql-2012-12-16_000000.log
-rw------- 1 postgres kenyon   29713  Dec 17 21:07 postgresql-2012-12-17_000000.csv
-rw------- 1 postgres kenyon       0     Dec 17 00:00 postgresql-2012-12-17_000000.log
-rw------- 1 postgres kenyon     900    Dec 18 20:49 postgresql-2012-12-18_000000.csv
-rw------- 1 postgres kenyon       0     Dec 18 00:00 postgresql-2012-12-18_000000.log
-rw------- 1 postgres kenyon    4607   Dec 19 18:55 postgresql-2012-12-19_000000.csv
-rw------- 1 postgres kenyon       0     Dec 19 00:00 postgresql-2012-12-19_000000.log
-rw------- 1 postgres kenyon    1573   Dec 20 20:38 postgresql-2012-12-20_000000.csv
-rw------- 1 postgres kenyon       0     Dec 20 00:00 postgresql-2012-12-20_000000.log
-rw------- 1 postgres kenyon       0     Dec 21 00:00 postgresql-2012-12-21_000000.csv
-rw------- 1 postgres kenyon       0     Dec 21 00:00 postgresql-2012-12-21_000000.log


pg_xlog
这个日志是记录的Postgresql的WAL信息,也就是一些事务日志信息(transaction log),默认单个大小是16M,源码安装的时候可以更改其大小。这些信息通常名字是类似'000000010000000000000013'这样的文件,这些日志会在 定时回滚恢复(PITR), 流复制(Replication Stream)以及归档时能被用到,这些日志是非常重要的,记录着数据库发生的各种事务信息,不得随意删除或者移动这类日志文件,不然你的数据库会有无法恢复的风险

当你的归档或者流复制发生异常的时候,事务日志会不断地生成,有可能会造成你的磁盘空间被塞满,最终导致DB挂掉或者起不来。遇到这种情况不用慌,可以先关闭归档或者流复制功能,备份pg_xlog日志到其他地方,但请不要删除。然后删除较早时间的的pg_xlog,有一定空间后再试着启动Postgres。

pg_clog
pg_clog这个文件也是事务日志文件,但与pg_xlog不同的是它记录的是事务的元数据(metadata),这个日志告诉我们哪些事务完成了,哪些没有完成。这个日志文件一般非常小,但是重要性也是相当高,不得随意删除或者对其更改信息。

总结:
pg_log记录各种Error信息,以及服务器与DB的状态信息,可由用户随意更新删除
pg_xlog与pg_clog记录数据库的事务信息,不得随意删除更新,做物理备份时要记得备份着两个日志。

参考转译:
http://it.toolbox.com/blogs/database-soup/pg_log-pg_xlog-and-pg_clog-45611

© 著作权归作者所有

共有 人打赏支持
kenyon_君羊
粉丝 499
博文 170
码字总数 121714
作品 0
杭州
其他
私信 提问
postgresql数据库体系结构

postgresql数据库是由:连接管理系统(系统控制器)、编译执行系统、存储管理系统、事务系统、系统表 五大部分组成。 ①:连接管理系统:接收外部操作对系统的请求,对操作请求进行预处理和分...

一个笨小孩
2018/07/19
0
0
从代码层判断 pg_basebackup 是否已正常结束 - 暨改进建议

标签 PostgreSQL , pg_basebackup 背景 用户通常会使用pg_basebackup来对PostgreSQL实施在线备份,对于超级大的数据库实例,可能需要备份很久。 如果将任务分解来看,假设备份是任务流中的一...

德哥
2018/06/21
0
0
【开源访谈】瀚高王刚:PostgreSQL 的发展将会越来越好

PostgreSQL 是一个功能强大,开源对象关系型数据库系统,拥有超过 15 年的持续开发和经验证的体系结构,赢得了良好的声誉。关于 PostgreSQL 的学习有哪些要注意的事项?与其他数据库相比,P...

达尔文
2017/08/07
2.7K
13
PostgreSQL 的一些你可能不知道但应该尝试的功能

PostgreSQL包含许多重要的功能。他们中的许多人都非常知名。其他人可以是非常有用的,但没有广泛赞赏。以下是我们首选的PostgreSQL功能,您可能没有仔细看过,但实际上应该这样做,因为它们可...

oschina
2018/06/27
2.4K
6
Postgres中的WAL(三)ControlFileData & CKPT

控制文件在数据库中非常的重要,里面会记录CKPT信息以及数据库的初始化信息。这篇文件主要分享一下控制文件,以及数据库崩溃的情况下如何如何通过控制文件和CKPT来回放WAL。 PG_VERSION:10....

RDBMS原理分析
2018/07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

移植Modbus到STM32F103(2):移植FreeModbus到usart3并运行示例代码

FreeModbus是Modbus的一个被广泛移植的实现。其源码在github,最新版是1.6。 FreeModbus支持Modbus功能码里的0x01~0x06,0x0F~0x11和0x17,对一些功能比如异常诊断和读事件计数等功能码并没有...

Konstantine
今天
3
0
浅谈神经网络(神经网络篇)

背景 之前写过浅谈神经网络基础篇,简单介绍下机器学习这块内容,用于扫盲。本文正式将神经网络,这部分是深度学习的基础。了解完可以掌握强大的机器学习的方法,也可以更好的了解深度学习。...

Uknowzheng
今天
3
0
移动硬盘变为RAW格式后的修复

在Mac上使用自己的移动硬盘结果文件系统格式变为RAW; 在自己windows笔记本上使用chkdsk H: /F进行修复,修复日志如下: C:\Users\mengzhang6>chkdsk H: /F文件系统的类型是 NTFS。卷标是 do...

晨猫
今天
3
0
10 Git —— 标签管理

10 Git —— 标签管理 本节内容: 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;命令git......

lwenhao
今天
3
0
小程序设置垂直居中,水平居中

如果子容器中的view需要居中的话,那需要在父容器中设置居中 水平居中: display: flex; flex-direction: column; align-items: center; 垂直居中 display: flex;align-items: cen...

淘幻幻
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部