測量 pgactive 成員之間的複寫延遲 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

測量 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 串流的變更,但訂閱者端不存在該資料表時

  • 主索引鍵資料行中的值已更新

  • 次要唯一索引可能會導致資料差異。