PostgreSQL的日誌類型

剛開始學習postgres的時候,可能對PostgreSQL中的日誌概念比較模糊,到底有多少種日誌,哪些日誌是能刪除的,各自又記錄什麼樣的功能。 linux

PostgreSQL中有三種日誌,pg_log,pg_xlog和pg_clog。

一.安裝路徑
這三種數據庫後二者通常的安裝路徑是$PGDATA/下面的文件夾下,前者默認路徑是$PGDATA/pg_log,一般可本身定義路徑和文件名 sql


[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 數據庫

相關文章
相關標籤/搜索