PostgreSQL/配置
主要的配置檔案是 postgresql.conf。它根據不同的任務被分成多個部分。第二個重要的配置檔案是 pg_hba.conf,其中儲存了身份驗證定義。
這兩個檔案都位於特殊目錄 $PGDATA(Debian/Ubuntu)或叢集主目錄(RedHat)中。
一些配置項具有動態特性,可以透過簡單的 pg_ctl reload 生效。其他配置項則需要重啟例項 pg_ctl restart。預設配置檔案中的註釋說明了需要採取哪種操作。
data_directory 的值定義了叢集主目錄的位置。同樣地,hba_file 的值定義了上述 pg_hba.conf 檔案(基於主機的身份驗證檔案)的位置和名稱,其中儲存了身份驗證規則 - 更多詳細資訊請參見 下面。
在連線部分,您可以定義埠號(預設值:5432),客戶端應用程式可以透過該埠號連線到例項。此外,還定義了最大連線數以及 SSL、IP 和 TCP 設定。
資源部分的主要定義是共享緩衝區的尺寸。它決定了在 PostgeSQL 的 RAM 緩衝區中保留多少空間來“映象”資料檔案的內容。預定義的預設值為 128 MB,相對較低。
其次,還定義了工作記憶體和維護記憶體。它們決定了排序、建立索引命令等操作使用的 RAM 尺寸。這兩個 RAM 區域針對每個連線而存在,並由它們單獨使用,而共享緩衝區只針對整個例項存在,並由多個程序併發使用。
此外,還有一些定義涉及 vacuum 和 background writer 程序。
在 WAL 部分,定義了 WAL 機制的行為。
首先,您可以從四種可能性中定義 WAL 級別:minimal、archive、hot_standby 和 logical。根據您要使用的歸檔或複製型別,WAL 機制將僅向 WAL 檔案寫入基本資訊或包含其他資訊。minimal 是基本方法,對於每次崩潰恢復都是必須的。archive 是任何歸檔操作所必需的,包括 point-in-time-recovery (PITR) 機制。hot_standby 添加了在備用伺服器上執行只讀查詢所需的額外資訊。logical 添加了支援邏輯解碼所需的資訊。
此外,與 WAL 級別 archive 相關聯,還有一些定義描述了歸檔行為。尤其是 'archive_command' 至關重要。它包含一個命令,該命令將 WAL 檔案複製到歸檔位置。
如果您使用複製到不同的伺服器,則可以在此部分定義主伺服器和備用伺服器所需的屬性值。主伺服器只讀取並關注主伺服器定義,而備用伺服器只關注備用伺服器定義(您可以直接從主伺服器將此 'postgres.conv' 部分複製到備用伺服器)。您必須將 WAL 級別定義為適當的值。
調優部分定義了不同操作的相對成本:順序磁碟 I/O、隨機磁碟 I/O、處理一行、處理一個索引條目、處理一個函式呼叫或算術運算、每個程序在執行時可用的有效 RAM 頁面大小(PostgreSQL + 作業系統)。這些值在查詢規劃器搜尋最佳查詢執行計劃時使用。從毫秒或 CPU 週期數的角度來看,這些值並非真實值。它們只是查詢規劃器的一個粗略指南,並且彼此之間是相對的。實際值是在查詢執行期間計算的,可能會有很大差異。
還存在一個關於遺傳查詢最佳化器成本的子部分,它與標準查詢最佳化器相反,它實現了對最佳計劃的啟發式搜尋。
錯誤日誌記錄部分定義了在錯誤情況下或出於除錯目的而報告的日誌訊息的數量、位置和格式。
在統計資訊部分,您可以定義 - 除了其他內容之外 - 解析、規劃和執行查詢的統計資訊收集量。
pg_hba.conf 檔案(基於主機的身份驗證)包含客戶端訪問例項的規則。所有不滿足這些規則的客戶端連線嘗試都會被拒絕。這些規則限制了連線型別、客戶端 IP 地址、叢集中的資料庫、使用者名稱和身份驗證方法。
主要有兩種連線型別:透過套接字的本地連線(local)和透過 TCP/IP(host)的連線。術語 local 指的是客戶端程式與例項位於同一臺機器上的情況。客戶端可以透過使用叢集的 TCP/IP 地址語法(例如:'localhost:5432')來覆蓋 local 連線並使用 host 連線型別。
客戶端 IP 地址是單個 IPv4 或 IPv6 地址,或透過 CIDR 掩碼掩蓋的網路段。
資料庫和客戶端使用者名稱必須顯式給出,或者可以用關鍵字 "ALL" 來縮寫。
有不同的身份驗證方法
- trust:不詢問任何密碼
- reject:不允許任何訪問
- password:詢問密碼
- md5:與 'password' 相同,但密碼傳輸使用 MD5 加密
- peer:信任客戶端,如果他使用的資料庫使用者名稱與其作業系統使用者名稱相同(僅適用於本地連線)
由於 pg_hba.conf 記錄是按順序針對每個連線嘗試進行檢查的,因此記錄的順序很重要。在定義的標準和傳入連線請求的屬性之間,第一個匹配項命中。