天天看點

HGDB日志管理

作者:瀚高PG實驗室 (Highgo PG Lab)- 波羅

HGDB有3種日志,分别是hgdb_log(資料庫運作日志)、pg_xlog(WAL 日志,即重做日志)、pg_clog(事務送出日志,記錄的是事務的中繼資料)。

hgdb_log預設是關閉的,需要設定參數啟用此日志。

pg_xlog和pg_clog都是強制打開的,無法關閉。

預設路徑為$PGDATA。

hgdb_log 

該檔案夾中的日志一般用來記錄伺服器與DB的狀态,如各種Error資訊,定位慢查詢SQL,資料庫的啟動關閉資訊,發生checkpoint過于頻繁等的告警資訊等。

linux自帶的路徑一般在$PGDATA下面。該日志有.csv格式和.log。

這種日志是可以被清理删除不影響DB的正常運作。

當我們有遇到DB無法啟動或者更改參數沒有生效時,第一個想到的就是檢視這個日志。 

如果服務無法啟動,該日志檔案夾下的日志沒有記錄,建議檢視作業系統的事件檢視器的日志。有助于快速定位問題。

日志相關參數推薦值:

alter system set log_destination = 'csvlog'; 

alter system set logging_collector = on;   #是否将日志重定向至檔案中

alter system set log_directory = 'hgdb_log';     #日志所在目錄

alter system set log_filename = 'highgodb-%a.log';  #%a 應用名稱

alter system set log_rotation_age = '1d';   #每天生成一個新的日志檔案

alter system set log_rotation_size = 0;     #不限制單個日志檔案大小

alter system set log_truncate_on_rotation = on;  #隻保留7天日志,循環覆寫

alter system set log_hostname = on;

alter system set log_line_prefix = '%m';  #控制每條日志資訊的字首格式,%m時間戳帶毫秒

alter system set log_statement = 'ddl';  #控制記錄哪些SQL語句,ddl記錄所有資料定義指令

------

pg_xlog 

該檔案夾中的日志是記錄的HGDB的WAL資訊,也就是一些事務日志資訊(transaction log),預設單個大小是16M。這些資訊通常名字是類似'000000010000000000000013'這樣的檔案,這些日志會在 定時復原恢複(PITR), 流複制(Replication Stream)以及歸檔時能被用到,這些日志是非常重要的,記錄着資料庫發生的各種事務資訊,不得随意删除或者移動這類日志檔案,不然你的資料庫會有無法恢複的風險。

當歸檔或者流複制發生異常的時候,事務日志會不斷地生成,有可能會造成磁盤空間被塞滿,最終導緻DB挂掉或者起不來。遇到這種情況不用慌,可以先關閉歸檔或者流複制功能,備份pg_xlog日志到其他地方,但請不要删除。然後删除較早時間的的pg_xlog,有一定空間後再試着啟動資料庫。 

WAL開啟歸檔

alter system set wal_level = archive;

alter system set archive_mode = on;

alter system set archive_directory = '/hgdbbak/archive';

------

pg_clog 

pg_clog這個檔案也是事務日志檔案,但與pg_xlog不同的是它記錄的是事務的中繼資料(metadata),這個日志告訴我們哪些事務完成了,哪些沒有完成。這個日志檔案一般非常小,但是重要性也是相當高,不得随意删除或者對其更改資訊。

pg_log記錄各種Error資訊,以及伺服器與DB的狀态資訊,可由使用者随意更新删除pg_xlog與pg_clog記錄資料庫的事務資訊,不得随意删除更新,做實體備份時要記得備份着兩個日志。