完整的高可用機(jī)制除了后端節(jié)點(diǎn)的切換,還包括發(fā)生故障轉(zhuǎn)移

一個(gè)完整的高可用機(jī)制除了后端節(jié)點(diǎn)的切換,還包括發(fā)生故障轉(zhuǎn)移后,客戶端如何能夠快速地連接到冗余節(jié)點(diǎn),繼續(xù)業(yè)務(wù)讀寫。常用的實(shí)現(xiàn),包括 Driver 層解決方案,例如 mongoDB replication set,也有通過二層內(nèi)的廣播方式實(shí)現(xiàn) vip,例如 keepalived,當(dāng)然還包括 proxy,以及三層 DNS 的實(shí)現(xiàn)。
SQL Server 的實(shí)現(xiàn)采用了 Driver 層處理的方式,開發(fā)者要實(shí)現(xiàn)自動(dòng)的故障轉(zhuǎn)移,在連接數(shù)據(jù)庫時(shí),除了必須要指定初始節(jié)點(diǎn)的 IP 和端口,還要指定故障轉(zhuǎn)移的節(jié)點(diǎn)的 IP 和端口。客戶端首先嘗試使用初始節(jié)點(diǎn)創(chuàng)建連接,如果初始節(jié)點(diǎn)指向的實(shí)例當(dāng)前為 principal,則連接會(huì)建立成功,可以正常的讀寫。當(dāng)發(fā)生故障切換時(shí),principal 會(huì)切斷所有已有客戶端連接,然后客戶端建立到初始節(jié)點(diǎn)連接也會(huì)失敗,通過一定的重試策略失敗后,會(huì)嘗試連接之前指定的故障轉(zhuǎn)移節(jié)點(diǎn),從而實(shí)現(xiàn)服務(wù)入口的切換。
SQL Server 常用的訪問接口:OLE DB、ODBC、ADO 均支持指定故障轉(zhuǎn)移節(jié)點(diǎn),格式如下:
Server=250.65.43.21,4734; Failover_Partner=250.65.43.22,4734;
集群監(jiān)控
鏡像集群的監(jiān)控可以通過 SQL Server Management stdio 啟動(dòng)鏡像監(jiān)視器,或者系統(tǒng)內(nèi)置的存儲(chǔ)過程來實(shí)現(xiàn),監(jiān)控的主要指標(biāo)包括:
○ 未發(fā)送日志:principal 上未發(fā)送的日志超過指定的閾值,會(huì)在 principal 上生成一個(gè)警告,在高性能模式下,強(qiáng)制服務(wù)時(shí)可以作為評(píng)估 principal 上事務(wù)丟失數(shù)量的依據(jù),同樣也適用于在高安全模式切換成異步模式狀態(tài)下(mirror 失去連接)。

○ 未還原日志:重做隊(duì)列中的未被應(yīng)用的事務(wù)日志數(shù)量(KB),超過閾值,會(huì)在 mirror 上生成一個(gè)警告,該值可以作為評(píng)估故障轉(zhuǎn)移時(shí)間的主要因素。
○ 最早未被發(fā)送的事務(wù):principal 發(fā)送隊(duì)列中,最早未被發(fā)送的事務(wù)距離現(xiàn)在的時(shí)間,單位時(shí)分鐘,超過閾值,會(huì)在 principal 上生成警告,與未發(fā)送日志量一起,從時(shí)間維度,衡量高性能模式下和高安全異步模式下,數(shù)據(jù)丟失數(shù)量。
○ 鏡像提交開銷:高安全模式下,principal 上事務(wù)從提交到等到 mirror 響應(yīng)的時(shí)間開銷的平均值,如果超過閾值,則在 principal 上生成一個(gè)警告,在同步模式下,該值可以衡量同步開銷。