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

  • 主索引鍵欄中的值已更新

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