PostgreSQL 流復制解惑


一、流復制的機制

PostgreSQL流復制是基於wal日志。主庫產生wal日志並發送給備庫;備庫接收wal日志記錄;並重放這些wal日志。從而達到主備庫數據同步。備庫只讀。

二、沖突檢測機制

PostgreSQL流復制中備庫是只讀的;備庫在讀某些記錄時;跟主庫執行的ddl操作/或者一些維護操作。例如vacuum死tuple時。備庫正是需要在查詢的tuple。

解決這些沖突:

備庫取消查詢

主庫延遲清理死tuple

參數max_standby_archive_defer、max_standby_steaming_defer 設置大一點。

備庫開啟feed back。 告知主庫在清理tuple是否是備庫所需要的。

vacuum_defer_cleanup_age設置大一點;減少沖突。

三、如果備庫開啟FEED BACK對主庫有什么傷害

如果備庫開啟feed back。可能會操作主庫的對象膨脹。

備庫開啟feed back;其目的是告知主庫“備庫最小活躍的事物ID”。而活躍中tuple不用被清理,而這些tuple正好是update/delete造成的死 tuple。主庫不會對這些vacuum。影響等同於主庫的長事物未終止

四、同步復制機制的堵塞機制

同步復制機制:主庫的事務需要wal日志傳送給備庫或者備庫需要應用wal日志才能返回。若網絡不好,或者wal日志比較大。從而造成主庫事務一直在等待。

五、如何降低延遲

開啟同步模式;

參數max_standby_archive_defer、max_standby_steaming_defer設置小一點。

主備庫直接使用內網連接

六、如何避免主備斷開后需要重搭

將wal_keep_segment設置大一些。

使用命令pg_rewind進行備庫恢復。

七、如何做到數據傳輸安全

主備庫是用內網連接;

采用ssl加密連接

八、如何降低跨域數據傳輸延遲

使用內網連接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM