Postgresql

副本數據庫是否應該處於“恢復”狀態 - PostgreSQL

  • November 16, 2021

我有兩個正在使用流複製的數據庫,並且似乎處於這種狀態

postgres 16319  0.0  0.5 137949952 3077260 ?   Ss   Aug22   0:11 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/
postgres 16321  0.0  0.0 249564  2080 ?        Ss   Aug22   0:00  \_ postgres: logger
postgres 16322  7.3  5.2 137950296 27899272 ?  Ss   Aug22 9031:16  \_ postgres: startup   recovering 0000000100003EA70000002C
postgres 16323  0.8  5.2 137950152 27549964 ?  Ss   Aug22 1001:55  \_ postgres: checkpointer
postgres 16324  0.0  0.1 137949928 1050960 ?   Ss   Aug22   1:40  \_ postgres: background writer
postgres 16338  0.0  0.0 251960  2328 ?        Ss   Aug22  57:32  \_ postgres: stats collector
postgres 16339 10.6  0.0 137961464 5116 ?      Ss   Aug22 13123:06  \_ postgres: walreceiver   streaming 3EA7/2C5A24F0

我通常只在數據庫處於不良狀態時才注意到“正在恢復”。當我對得到的副本執行查詢時

ERROR:  canceling statement due to conflict with recovery

我注意到“流式傳輸 3EA7/2C5A24F0”並且恢復正在增加。

SELECT * FROM pg_stat_wal_receiver似乎也在增加。

我只是想確保我的數據庫沒有問題,它只是recovery用作複製機制的一部分。

如果您按照流複製手冊中的描述通過發送預寫日誌來設置 Postgres 複製,那麼是的,所有副本都處於正常的永久恢復狀態。當對主節點執行寫事務時,副本從主節點接收並應用日誌,就像恢復中的任何 Postgres 伺服器一樣。

您看到的變化數字是目前收到的交易 ID。

請閱讀完整的連結頁面以闡明詳細資訊。對我來說,這很明顯,備用(從)伺服器實際上會持續執行恢復,除非被提升。

引用自:https://serverfault.com/questions/1083651