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 2012pg_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:20pg_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@testdbpgdata]$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无法启动或者更改参数没有生效时,第一个想到的就是查看这个日志。
一般的结果如下:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。