2011年12月6日 星期二

PostgreSQL 9 Streaming Replication


從PostgreSQL 9版本開始,加入了新的replication方式 ----- Streaming Replication。
它和原本的Warm Standby模式有些類似,但是同步的速度更快,稱為Hot Standby。 
原本的Warm Standby模式中,Standby主機都是等待Primary主機傳送WAL過來,
然後進行Recovery,也就是說,要等待Primary每次寫滿了一個16MB的WAL檔後,
才能進行一次log shipping及restore/recovery。
當然,在Primary主機上設定archive_timeout,可以縮短每次WAL傳送的時間間隔,
這又會造成傳送太多沒寫滿的WAL(每個檔還是16MB那麼大) ,對於網路流量與
WAL歸檔空間來說十分浪費。
在Streming Replication模式下,Standby主機會先檢查歸檔目錄中的WAL檔,取得
後進行Recovery,當歸檔目錄中所有的WAL都已經進行過回復之後,
Standby會透過recovery.conf中所設定的primary_conninfo資訊,主動連線到Primary
主機取得WAL stream,只要Primary上有異動,幾秒鐘內就能夠被Standby取得並進行
回復。
因此,Primary上的異動,最慢幾秒鐘內就能夠在Standby上看得到。
最重要的是,原本的Warm Standby模式下,Standby主機是無法連線使用的,只能在
Primary損壞時作為頂替之用;在Streaming Replication模式下,Standby主機可以作
為read-only之功用,不用將一台主機閒置在那。 
底下,是針對目前為止所了解的Streaming Replication作業模式所繪的示意圖,
streaming replication 1  

streaming replication 2 
目前,對於Streaming Replication很多原理、細節還不太了解,若有更進一步了解,再補充或修正內容。

沒有留言: