作者:瀚高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記錄資料庫的事務資訊,不得随意删除更新,做實體備份時要記得備份着兩個日志。