1. 程式人生 > >PostgreSQL 日誌檔案,區別

PostgreSQL 日誌檔案,區別

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

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

一.安裝路徑

這三種資料庫後兩者一般的安裝路徑是$PGDATA/下面的資料夾下,前者預設路徑是$PGDATA/pg_log,通常可自己定義路徑和檔名

[postgres @t estdb ~]$ cd $PGDATA

[postgres @test db 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 @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無法啟動或者更改引數沒有生效時,第一個想到的就是檢視這個日誌。

一般的結果如下:

[[email protected] 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記錄資料庫的事務資訊,不得隨意刪除更新,做物理備份時要記得備份著兩個日誌。


相關推薦

PostgreSQL 日誌檔案區別

剛開始學習postgres的時候,可能對PostgreSQL中的日誌概念比較模糊,到底有多少種日誌,哪些日誌是能刪除的,各自又記錄什麼樣的功能。 PostgreSQL中有三種日誌,pg_log,pg_xlog和pg_clog。 一.安裝路徑 這三種資料庫後兩者一

PHP列印log日誌檔案儲存資料到指定檔案

在專案開發中,作為一個後端開發人員肯定是要經常觀察日誌等記錄來查詢開發或上線的各種bug 分享一個列印日誌記錄的方法 /** * [errorLog 列印錯誤日誌記錄] * @param [type] $message [列印日誌記錄] * @param [type] $file

spark讀取日誌檔案把RDD轉化成DataFrame

一、先開啟Hadoop和spark 略 二、啟動spark-shell spark-shell --master local[2] --jars /usr/local/src/spark-1.6.1-bin-hadoop2.6/libext/com.mysql.jdbc

logback日誌的使用每天生成一個日誌檔案以及error和其他級別日誌的分離

springboot會自動幫我們讀取logback的配置檔案,我們實現只需要新增即可在application中配置日誌檔案的位置logging: config: classpath:conf/logback-dev.xml配置檔案的內容如下:<?xml versio

springBoot 日誌按天生成日誌檔案以及配置生成HTTP 請求的日誌列印引數(版本1.5.9)

日誌按天生成日誌檔案  logback-spring.xml   內容如下(放到application.properties 所在資料夾裡面):  <?xml version="1.0" encoding="UTF-8"?> <configuration

使用AutoHotkey分析日誌檔案得到分析報告。

使用 AutoHotkey 分析日誌檔案,得到分析報告。 由程式自動生成的日誌檔案一般有固定的格式,而且檔案大小通常比較大。當需要分析這樣的日誌檔案,需要用肉眼在成千上萬條記錄裡面尋找異常,那將是

log4j輸出多個自定義日誌檔案動態配置路徑

1.    log4j輸出多個自定義日誌檔案  log4j的強大功能無可置疑,但實際應用中免不了遇到某個功能需要輸出獨立的日誌檔案的情況,怎樣才能把所需的內容從原有日誌中分離,形成單獨的日誌檔案呢?其實只要在現有的log4j基礎上稍加配置即可輕鬆實現這一功能。   先看一個

=讀取日誌檔案正則表示式匹配出有用資訊並且儲存到csv檔案

//版本1 import java.io.BufferedReader;   import java.io.BufferedWriter; import java.io.File;   import java.io.FileReader;   import java.io.

使用linux分割較大的日誌檔案檢視日誌

在排查專案問題的時候,日誌檔案是很有參考價值的。但是如果專案執行時間比較久,產生的日誌可能是海量的,如果需要檢視較大日誌檔案就會很麻煩,我們可以使用linux提供的split命令,將較大的日誌檔案切割為小檔案,方便我們檢視日誌檔案,進行問題的定位。1.切割檔案1)使用split分割大檔案原檔案為圖所 命令

adb 抓取日誌到指定檔案檔案命名為當前電腦時間

需求產生原因 我們儲存日誌的時候,需要把日誌檔名命名為當前的系統時間,方便我們以後檢視日誌。 命令如下 adb logcat > "%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%-%time:~3,2%-%time:~6,

IO流讀取資料檔案將資料寫入資料庫並記錄資料匯入日誌

流程分析: 資料型別: ROUTE_ID,LXBM,ROAD_NAME,SRC_LON,SRC_LAT,DEST_LON,DEST_LAT 10000,G50,滬渝高速,115.8605349,30.08934467,115.5437817,30.08898601 10001,G

log4j不列印sql不輸出日誌檔案到指定目錄

#log4j.rootLogger=CONSOLE,info,error,DEBUG log4j.rootLogger=infoA,errorA,CONSOLE,DEBUGA //注意這裡不要用INFO,DEBUG等 改個名字 log4j.appender.CONSOLE=org.apach

檔案的壓縮日誌管理ip地址設定的三種方法

tar                                  ##歸檔檔案(把多個檔案變成一個檔案)   &

自動建立hibernate。配置檔案對映實體自動生成日誌的配置

            建立db                   空白處ne

oracle匯入sql檔案並且記錄日誌

一、匯入.sql檔案 @data.sql 二、記錄日誌: 1、輸入命令  sqlplus 資料庫名/密碼@資料庫   按回車鍵 2、輸入spool  指定路徑:\a.log    按回車鍵  (此步驟的主要作用就是追蹤批量執

統計日誌檔案中訪問數量Spark中加強版WordCount

  寫在前面 學習Scala和Spark基本語法比較枯燥無味,搞搞簡單的實際運用可以有效的加深你對基本知識點的記憶,前面我們完成了最基本的WordCount功能的http://blog.csdn.net/whzhaochao/article/details/72358215,這篇主

php 寫入檔案日誌記錄資訊方法

/** * [write_log 寫入日誌] * @param [type] $data [寫入的資料] * @return [type] [description] */ function write_log($data){ $years = date('Y-m')

appium官網下載appium-desktop時檔案區別:.dmg、.mac.zip、.nupkg、.AppImage、ia32.exe、.exe等

appium官網下載appium-desktop時,存在Appium-1.8.2.dmg、appium-desktop-1.8.2-mac.zip、appium-desktop-1.8.2-full.nupkg、appium-desktop-1.8.2-x86_64.AppImage、a

python官網下載windows版本時各檔案區別:web-based installer、executable installer、embeddable zip filex86、x86-64

python官網下載windows版本時,存在web-based installer、executable installer、embeddable zip file,x86、x86-64等多種檔案,如下圖: 下載連結1:https://www.python.org/downloads/

訪問日誌靜態檔案,訪問日誌切割靜態元素過期時間

[toc] 一 訪問日誌不記錄靜態檔案 很多網站大多為靜態網頁,網頁內部的圖片、css檔案等同樣有其網址連結,如果不設定,這些無效的資訊也將被存入訪問日誌中,會導致訪問日誌檔案大小快速增加,佔用大量儲存空間。我們可以通過設定不記錄某些檔案來減少無效資訊,節省記憶體資源。