1.Write Ahead Log(WAL日志)
預寫日志(WAL)是保證數據完整性的標准方法。在有關交易處理的大多數(如果不是全部)書籍中都可以找到詳細說明。 簡而言之,WAL的核心概念是,只有在記錄了對這些更改之后,即在描述更改的日志記錄已刷新到永久存儲之后,才寫入對數據文件(表和索引所在的位置)的更改。如果我們遵循此過程,我們不需要在每次事務提交時將數據頁刷新到磁盤,因為我們知道如果發生崩潰,我們將能夠使用日志恢復數據庫:任何尚未應用的更改,可以從日志記錄中重做數據頁面。(這是前滾恢復,也稱為REDO)
WAL還可以支持在線備份和基於時間點恢復。 通過歸檔WAL數據,我們可以支持恢復到可用WAL數據覆蓋的任何時刻:我們只需安裝數據庫的先前物理備份,並將WAL日志重播到所需的時間。 更重要的是,物理備份不必是數據庫狀態的瞬時快照 - 如果它是在一段時間內完成的,那么重播該期間的WAL日志將解決任何內部不一致問題。
位於目錄pg_wal中。單個文件大小由wal-segsize控制。默認是16mb。
WAL日志,相當於Oracle的在線重做日志。
主要的相關參數:
wal_level max_wal_size min_wal_size
2.WAL的歸檔日志
主要的相關參數:
archive_mode archive_command
3.事務狀態日志
pg_xact
pg_xact這個目錄下的文件也是事務日志文件,但與pg_wal不同的是它記錄的是事務的元數據(metadata),這些日志提供了事務提交狀態信息。這個日志文件一般非常小,不得隨意刪除或者對其更改信息。
4.pg_log
server log一般是記錄服務器與DB的狀態,比如各種Error信息,定位慢查詢SQL,數據庫的啟動關閉信息,發生checkpoint過於頻繁等的告警信息。當數據庫出問題時,首先就要查看這個日志
主要的相關參數:
log_destination logging_collector log_directory log_filename log_rotation_age log_rotation_size