System Replication-這一篇我們要專門講HANA最高等的高可用度Solution.
這一個Solution也不僅限於在不同的機房,如果夠有錢也可以在同一個機房實行。System Replication概念就是搞兩套一模一樣的軟硬體然後做同步的動作。下圖中若主要系統有standby host,在另一邊可以不用有standby host.
兩邊都要有同樣的SID及相同的設定,第二套系統可以是standby mode 或是read only mode.意思是同步過去的資料前端的程式可以讀取。另外在第二套系統上你也可以設定資料(pre-load)在Memory上面跑,如果是read-only mode大都是要將資料放在Memory上面。而它failover 的速度要比HOST failover快很多,所以你若是scale up的架構,哪麼在同一個地點你就可以使用System Replication當作你的備援系統。此外還有以下這些需要注意
上圖中,Primary system會確定Secondary system有收到 transaction log之後 commit 才會成功,確保不會有資料遺失。但假設你的secondary system fail了, Primary system會積累tramsaction log,所以若seconday system掛掉太久哪它可能就要花很久的時間才能把資料追到跟primary一樣,而且log存在primary system的空間可能也有限。所以需要特別注意這一點,比較好的方式是加入data snapshot非同步性的傳送資料。
System Replication Mode(log replication)
上面有提到 Primary system會把tansaction log確認傳送到Secondary system的memory中,資料庫的交易才算成功這個稱作 “Synchronous in memory ”.這種的效率比較好,因為不會使用到效能差的storage layer.但有資料遺失的風險,因為都放在Memory上面所以要搭配Operation mode,後面會提及。
另外兩種是
Synchronous on disk(with full sync -option):
這一個一樣是transaction log的傳送,但是是傳送到HD端。當兩邊斷線時,Primary system 會將log積累在自己的空間等到連線回復再繼續傳送。但若不幸primaty system 掛了資料就會遺失了。而這個模式還可以將Full sync選項開啟,這是是將Primary system在memory 的log buffer直接傳送到Secondary system,兩邊的log buffer一致且 transaction log都有被寫入到兩邊的系統交易才會成功。這一個方式會需要付出極高的網路效能與可用性,因為一旦網路斷線所有在Primary system的交易都會失敗。
Asynchronous:
這跟第一種不一樣的是,第一種Primary system確認收到log才會commit交易。但非同步是指primary system將transaction log送出後會部會確認定一邊有沒有收到commit就會成功,這種方式會有遺失資料的風險。
System Replication — Operation Mode
前面提到是transaction log的傳送模式,但傳送之後secondary system有兩種方式來處理log
設定
我們可以從HANA Studio設定
接下來會是如下選擇
若是整個system DB還是online中,你就只有Enable system replication可以選,所以在secondary (target system)我們就需要把它關閉。
之後如上圖,就可以把這個停止服務的DB註冊成為Secondary system.並選擇 Replication mode and Operation Mode與跟soure sysem的主機資訊。
成功後你在Primary 與Secondary system的圖示會稍有不同(如下圖)
在Primary system點選進入後會看到更詳細的資訊