Postgresql

PostgreSQL同步複製超時?

  • May 28, 2020

我正在使用帶有同步複製的 PostgreSQL 9.3。我有 2 個同步複製器和 1 個非同步複製器。我的問題是當 2 個同步複製器關閉時,事務將無限期等待。我發現以下關於此的討論,

http://postgresql.1045698.n5.nabble.com/Timeout-for-asynchronous-replication-Re-Timeout-and-wait-forever-in-sync-rep-td3293679.html

但找不到解決方案。有沒有辦法解決這個問題?(可能正在使用 pg-pool 之類的工具)

這不是問題,這是設計使然。

如果您不希望事務等待同步副本確認送出,那麼您不希望同步複製。您想要非同步複製,並且應該簡單地刪除該synchronous_standby_names選項。

如果同步複製在無法訪問副本時放棄,那會有什麼好處?“我保證你的交易在另一個節點上是安全的——哦,除非副本關閉,在這種情況下,我會默默地違背我的承諾。”

通常,您應該做的是在不關心送出是否同步的事務中設置synchronous_commit為,文件說這意味著:local

但是,特殊值 local 可用於希望等待本地刷新到磁碟而不是同步複製的事務。

並將其on留作您不能承受損失的重要交易。所以只有那些會等到備用數據庫可以複製更改。

另請參閱 上的文件synchronous_standby_names

現在,您可能想要一種方式來表示“等待最多 5 分鐘以等待待機確認,但如果到那時還沒有,則繼續進行。” 目前不支持。我也不太相信它有用。

引用自:https://dba.stackexchange.com/questions/74063