一、流復制的機制
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加密連接
八、如何降低跨域數據傳輸延遲
使用內網連接