Postgresql

PostgreSQL 9.6 pg_rewind - 需要很長時間才能複制

  • January 8, 2020

我使用流式複制,複製工作正常。兩台伺服器是 HA 和 PostgreSQL DB 被複製。DB中的數據大約40G。當發生故障轉移時,slave成功提升為master,master變為slave,並嘗試複製新的master數據。但是,從新的主伺服器複製數據需要很長時間。(使用 pg_rewind / 成功 / 38G - 6 分鐘)。

如果還有其他節省時間的方法,請告訴我。

這是我執行的命令:

pg_rewind --target-pgdata="targetdir" --source-server="sourceserver"

這是輸出:

connected to server
servers diverged at WAL position 35/DD0D2260 on timeline 37
rewinding from last common checkpoint at 35/DC4E94F8 on timeline 37
reading source file list
reading target file list
reading WAL in target
need to copy 39193 MB (total source directory size is 77268 MB)
698400/40134372 kB (1%) copied

pg_rewind連接到新的 master 並找到它與舊 master 共享的最新檢查點。然後它檢查本地 WAL 以找到所有已被修改的塊,並從新的 master 複製這些塊。

所以這個過程很慢,如果

  • 很久以前就升級了,所以pg_rewind要翻很多WAL文件

或者

  • 自促銷以來,許多街區都發生了變化

從輸出中pg_rewind可以明顯看出,自從升級從站後,數據庫集群中的一半塊已經被修改。所以問題是你在升職後等了太久。故障轉移後立即pg_rewind會快得多。

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