【文檔】PostgreSQL從小白到專家 - 第12講:wal作用與管理

PostgreSQL從小白到專家,是從入門逐漸能力提升的一個(gè)系列教程,內(nèi)容包括對(duì)PG基礎(chǔ)的認(rèn)知、包括安裝使用、包括角色權(quán)限、包括維護(hù)管理、、等內(nèi)容,希望對(duì)熱愛(ài)PG、學(xué)習(xí)PG的同學(xué)們有幫助,歡迎持續(xù)關(guān)注CUUG PG技術(shù)大講堂。
Part 12:PostgreSQL WAL作用與管理
內(nèi)容1:WAL物理與邏輯結(jié)構(gòu)
內(nèi)容2:WAL數(shù)據(jù)內(nèi)部布局
內(nèi)容3:WAL數(shù)據(jù)寫(xiě)進(jìn)程
內(nèi)容4:WAL管理
內(nèi)容5:WAL歸檔日志
WAL概述
· 沒(méi)有WAL的插入操作

· 有WAL的插入操作

· Insert操作與recovery

· 使用WAL進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)

事務(wù)日志與WAL文件
· 事務(wù)日志與WAL 段文件

使用內(nèi)置函數(shù)pg_xlogfile_name(9.6或更早版本)或pg_walfile_name(10或更高版本),我們可以找到包含指定LSN的WAL段文件名。

WAL日志內(nèi)部布局
· WAL內(nèi)部布局

· 三類XLOG 數(shù)據(jù)部分記錄 (version 9.5 or later)

寫(xiě)XLOG記錄
· 寫(xiě)XLOG記錄


WAL寫(xiě)處理
· WAL 寫(xiě)進(jìn)程
1、At commit
2、When wal buffer full
3、writes periodically

寫(xiě)XLOG記錄
· Checkpoint 處理概述

pg_control File
· pg_control File30
即使pg_控制文件存儲(chǔ)超過(guò)40個(gè)項(xiàng)目,需要的三個(gè)項(xiàng)目如下所示:
State –最新檢查點(diǎn)啟動(dòng)時(shí)數(shù)據(jù)庫(kù)服務(wù)器的狀態(tài)。總共有七種狀態(tài):“啟動(dòng)”是系統(tǒng)正在啟動(dòng)的狀態(tài);“關(guān)閉”是系統(tǒng)通過(guò)shut down命令正常關(guān)閉的狀態(tài);“生產(chǎn)中”是系統(tǒng)正在運(yùn)行的狀態(tài);依此類推。
Latest checkpoint location –最新檢查點(diǎn)記錄的LSN位置。
Prior checkpoint location –先前檢查點(diǎn)記錄的LSN位置。
· 9.7.2. pg_control File
pg_control文件存儲(chǔ)位置:
postgres> pg_controldata /usr/local/pgsql/data
pg_control version number: 937
Catalog version number: 201405111
Database system identifier: 6035535450242021944
Database cluster state: in production
pg_control last modified: Mon Apr 27 15:16:38 2020
Latest checkpoint location: 0/C000F48
Prior checkpoint location: 0/C000E70
... snip ...
Database Recovery
· 數(shù)據(jù)庫(kù)實(shí)例恢復(fù)開(kāi)始位置( 檢查點(diǎn))

· 數(shù)據(jù)庫(kù)WAL日志記錄

· 利用wal進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)

WAL 文件管理
· WAL 日志切換
WAL 滿足以下條件發(fā)生日志切換:
1、WAL segment has been filled up.?
2、The function pg_switch_wal has been issued.
3、archive_mode is enabled and the time set to archive_timeout has been exceeded.(基于主備復(fù)制需求)
· 創(chuàng)建新的WAL日志文件

· WAL日志文件刪除與回收(基于一個(gè)checkpoint完成過(guò)程)

· 文件管理WAL段文件的數(shù)量主要由以下三個(gè)參數(shù)控制:
1、checkpoint_segments (9.5版本后被廢棄)
2、checkpoint_completion_target (默認(rèn)為0.5)
3、WAL_keep_segments
((2+checkpoint_completion_target)×checkpoint_segments+1)
數(shù)據(jù)庫(kù)歸檔
· 歸檔日志
連續(xù)歸檔是在WAL段切換時(shí)將WAL段文件復(fù)制到歸檔區(qū)域的功能,由archiver(后臺(tái))進(jìn)程執(zhí)行。其中,占位符%p是復(fù)制的WAL段,而%f是存檔日志。
ALTER SYSTEM SET archive_command = 'cp %p /home/postgres/archives/%f';
ALTER SYSTEM SET archive_mod = on;
WAL 文件管理
· 發(fā)生切換時(shí)歸檔

· 設(shè)置wal相關(guān)參數(shù)?
設(shè)置wal目錄最大可用尺寸(默認(rèn)值為1024MB):max_wal_size?
?設(shè)置wal文件最大可用尺寸(默認(rèn)值為16MB):wal_segment_size?
設(shè)置wal緩沖區(qū)尺寸(默認(rèn)值512KB):wal_buffers

以上就是Part 12 - PostgreSQL wal作用與管理 的內(nèi)容,歡迎進(jìn)群一起探討交流,釘釘交流群:35,82,24,60,釘釘群有專門講解公開(kāi)課
往期課程及視頻,聯(lián)系cuug咨詢老師