本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
測量 pgactive 成員之間的複寫延遲
您可以使用下列查詢來檢視pgactive
成員之間的複寫延遲。在每個pgactive
節點上執行此查詢以取得完整圖片。
app=> SELECT * FROM pgactive.pgactive_get_replication_lag_info();
│-[ RECORD 1 ]--------+---------------------------------------------
│node_name | node2-app
│node_sysid | 7481018224801653637
│application_name | pgactive:7481018224801653637:send
│slot_name | pgactive_16385_7481018224801653637_0_16385__
│active | t
│active_pid | 783486
│pending_wal_decoding | 0
│pending_wal_to_apply | 0
│restart_lsn | 0/2108150
│confirmed_flush_lsn | 0/2154690
│sent_lsn | 0/2154690
│write_lsn | 0/2154690
│flush_lsn | 0/2154690
│replay_lsn | 0/2154690
│-[ RECORD 2 ]--------+---------------------------------------------
│node_name | node1-app
│node_sysid | 7481018033434600853
│application_name | pgactive:7481018033434600853:send
│slot_name | pgactive_16385_7481018033434600853_0_16385__
│active | t
│active_pid | 783488
│pending_wal_decoding | 0
│pending_wal_to_apply | 0
│restart_lsn | 0/20F5AD0
│confirmed_flush_lsn | 0/214EF68
│sent_lsn | 0/214EF68
│write_lsn | 0/214EF68
│flush_lsn | 0/214EF68
│replay_lsn | 0/214EF68
至少監控下列診斷:
- active
-
設定作用中為 false 時的提醒,表示插槽目前未使用 (訂閱者執行個體已與發佈者中斷連線)。
- pending_wal_decoding
-
在 PostgreSQL 的邏輯複寫中,WAL 檔案會以二進位格式儲存。發佈者必須解碼這些 WAL 變更,並將其轉換為邏輯變更 (例如插入、更新或刪除操作)。
指標 pending_wal_decoding 顯示等待在發佈者端解碼的 WAL 檔案數目。
此數字可能會因為下列因素而增加:
-
當訂閱者未連線時,作用中狀態將為 false,而 pending_wal_decoding 將增加
-
插槽處於作用中狀態,但發佈者無法跟上 WAL 變更的數量
-
- pending_wal_to_apply
-
指標 pending_wal_apply 表示等待套用到訂閱者的 WAL 檔案數目。
有幾個因素可能會阻止訂閱者套用變更,並可能導致磁碟完整案例:
-
結構描述差異 - 例如,當您在 WAL 串流中變更名為範例的資料表時,但該資料表不存在於訂閱者端
-
主索引鍵欄中的值已更新
-
次要唯一索引可能會導致資料差異
-