本發(fā)明專利技術(shù)公開了一種集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,包括如下步驟:a)將同一應(yīng)用程序分布部署在多個(gè)集群服務(wù)器上,并為該應(yīng)用程序的所有集群實(shí)例至少配置連接兩個(gè)數(shù)據(jù)庫(kù)實(shí)例;b)定時(shí)探測(cè)所有集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例之間的網(wǎng)路連接狀態(tài);c)如果某一集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例網(wǎng)絡(luò)斷連,則確認(rèn)該集群實(shí)例與下一數(shù)據(jù)庫(kù)實(shí)例之間的連接是否正常;d)如果連接正常則自動(dòng)轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例上,并強(qiáng)制集群內(nèi)所有其他實(shí)例轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例上。本發(fā)明專利技術(shù)在發(fā)生單集群實(shí)例與數(shù)據(jù)庫(kù)節(jié)點(diǎn)網(wǎng)絡(luò)故障時(shí),能夠讓集群所有實(shí)例連接在同一個(gè)節(jié)點(diǎn)上,確保所有實(shí)例的數(shù)據(jù)庫(kù)操作都能正常提交,避免數(shù)據(jù)丟失。
【技術(shù)實(shí)現(xiàn)步驟摘要】
一種集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法
本專利技術(shù)涉及一種多數(shù)據(jù)源故障轉(zhuǎn)移的方法,尤其涉及一種集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法。
技術(shù)介紹
WebLogicServer為多數(shù)據(jù)源提供了故障轉(zhuǎn)移算法,以便在數(shù)據(jù)源故障時(shí)(例如,在數(shù)據(jù)庫(kù)管理系統(tǒng)崩潰時(shí)),系統(tǒng)可繼續(xù)運(yùn)行。一個(gè)多數(shù)據(jù)源可被視為一組數(shù)據(jù)源。多數(shù)據(jù)源最適用于具有高可用性的數(shù)據(jù)庫(kù)系統(tǒng)(如冗余數(shù)據(jù)庫(kù)或OracleRealApplicationClusters,簡(jiǎn)稱RAC)的節(jié)點(diǎn)之間的故障轉(zhuǎn)移或負(fù)載平衡。故障轉(zhuǎn)移算法提供了一個(gè)用于滿足連接請(qǐng)求的數(shù)據(jù)源的有序列表。通常情況下,每一個(gè)對(duì)這種類型的多數(shù)據(jù)源發(fā)出的連接請(qǐng)求都由該列表中的第一個(gè)數(shù)據(jù)源提供服務(wù)。如果某個(gè)數(shù)據(jù)源連接未能通過(guò)測(cè)試,并且該連接無(wú)法被替換,或者如果該數(shù)據(jù)源已掛起,則會(huì)從該列表中的下一個(gè)數(shù)據(jù)源開始,按順序查找連接。但是,在某些發(fā)生了故障的情況下,當(dāng)未正在使用多數(shù)據(jù)源時(shí),發(fā)生在某個(gè)RAC實(shí)例(該實(shí)例不是在其上啟動(dòng)了某個(gè)事務(wù)的實(shí)例)上的事務(wù)處理(數(shù)據(jù)更改)將會(huì)丟失,而不會(huì)發(fā)出任何通知或引發(fā)任何異常。在下列情況下,某些數(shù)據(jù)更改將會(huì)丟失:1、server2和RAC1之間的網(wǎng)絡(luò)連接已丟失,這導(dǎo)致了server2上cp1中的數(shù)據(jù)庫(kù)連接故障轉(zhuǎn)移到RAC2。server1上的相同數(shù)據(jù)源仍然具有與RAC1的連接。2、在server1上,某個(gè)應(yīng)用程序啟動(dòng)了一個(gè)事務(wù)并使用來(lái)自cp1的連接(與RAC1的連接)進(jìn)行數(shù)據(jù)更改。3、該應(yīng)用程序調(diào)用了server2上的某個(gè)EJB,該EJB使用了server2上cp1中的某個(gè)數(shù)據(jù)庫(kù)連接(與RAC2的連接)進(jìn)行數(shù)據(jù)更改。4、該應(yīng)用程序在server1上完成了該事務(wù)。結(jié)果如下:RAC1上的數(shù)據(jù)更改被提交。RAC2上的數(shù)據(jù)更改被忽略。WebLogicServer事務(wù)管理器會(huì)調(diào)用資源上的準(zhǔn)備和提交。在此情況下,由于各數(shù)據(jù)源具有相同名稱,因此,它們被視為同一個(gè)資源,這樣,就只會(huì)在該數(shù)據(jù)源的一個(gè)實(shí)例上進(jìn)行調(diào)用。由于各數(shù)據(jù)源包含與不同RAC實(shí)例的連接,因此,一個(gè)RAC實(shí)例上數(shù)據(jù)更改會(huì)被提交,但其他RAC實(shí)例上的更改都會(huì)丟失。針對(duì)這種情況,一定要確保提供WebLogicServer實(shí)例和OracleRAC之間的冗余網(wǎng)絡(luò)硬件可避免網(wǎng)絡(luò)故障,但是網(wǎng)絡(luò)故障是不可控的。雖然使用了多數(shù)據(jù)源和RAC來(lái)確保數(shù)據(jù)庫(kù)單節(jié)點(diǎn)異常時(shí)可以故障轉(zhuǎn)移,但是如果出現(xiàn)網(wǎng)絡(luò)故障,這種故障轉(zhuǎn)移將會(huì)失效,并導(dǎo)致數(shù)據(jù)丟失,影響業(yè)務(wù)。
技術(shù)實(shí)現(xiàn)思路
本專利技術(shù)所要解決的技術(shù)問(wèn)題是提供一種集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,能夠確保集群里的應(yīng)用實(shí)例連接在RAC數(shù)據(jù)庫(kù)的同一節(jié)點(diǎn)上,避免因網(wǎng)絡(luò)故障導(dǎo)致集群結(jié)構(gòu)里的實(shí)例對(duì)同一數(shù)據(jù)源連接在不同的RAC數(shù)據(jù)庫(kù)節(jié)點(diǎn)上,最終導(dǎo)致其他RAC實(shí)例上的更改都丟失。本專利技術(shù)為解決上述技術(shù)問(wèn)題而采用的技術(shù)方案是提供一種集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,包括如下步驟:a)將同一應(yīng)用程序分布部署在多個(gè)集群服務(wù)器上,并為該應(yīng)用程序的所有集群實(shí)例至少配置連接兩個(gè)數(shù)據(jù)庫(kù)實(shí)例;b)定時(shí)探測(cè)所有集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例之間的網(wǎng)絡(luò)連接狀態(tài);c)如果某一集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例網(wǎng)絡(luò)斷連,則確認(rèn)該集群實(shí)例與下一數(shù)據(jù)庫(kù)實(shí)例之間的連接是否正常;d)如果連接正常則自動(dòng)轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例上,并強(qiáng)制集群內(nèi)所有其他實(shí)例轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例上。上述的集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,其中,所述步驟a)中的數(shù)據(jù)庫(kù)實(shí)例為OracleRAC,所述數(shù)據(jù)庫(kù)實(shí)例的數(shù)目為兩個(gè),其中,一個(gè)數(shù)據(jù)庫(kù)實(shí)例作為當(dāng)前工作數(shù)據(jù)庫(kù)節(jié)點(diǎn),另一數(shù)據(jù)庫(kù)實(shí)例作為備用數(shù)據(jù)庫(kù)節(jié)點(diǎn),所述兩個(gè)數(shù)據(jù)庫(kù)實(shí)例通過(guò)共享存儲(chǔ)連接至同一數(shù)據(jù)庫(kù)。上述的集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,其中,所述步驟b)中定時(shí)記錄所有集群實(shí)例與所有數(shù)據(jù)庫(kù)實(shí)例之間的網(wǎng)絡(luò)連接狀態(tài),并將狀態(tài)存入數(shù)據(jù)庫(kù)中記錄,每一記錄包括集群實(shí)例、數(shù)據(jù)源、數(shù)據(jù)庫(kù)實(shí)例、故障轉(zhuǎn)移標(biāo)識(shí)以及轉(zhuǎn)移成功標(biāo)識(shí);當(dāng)出現(xiàn)某一集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例網(wǎng)絡(luò)斷連,所述步驟c)設(shè)置故障轉(zhuǎn)移標(biāo)識(shí)為TRUE,并拋出異常信息通知集群內(nèi)其他實(shí)例,當(dāng)該集群實(shí)例轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例后,所述步驟d)設(shè)置轉(zhuǎn)移成功標(biāo)識(shí)為TRUE,確認(rèn)集群中的其他實(shí)例進(jìn)行故障轉(zhuǎn)移。上述的集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,其中,所述步驟b)通過(guò)判斷集群實(shí)例所在服務(wù)器與數(shù)據(jù)庫(kù)實(shí)例所在服務(wù)器之間的物理連接狀態(tài)來(lái)確認(rèn)集群實(shí)例與數(shù)據(jù)庫(kù)實(shí)例的連接狀態(tài);所述步驟c)通過(guò)發(fā)送測(cè)試SQL語(yǔ)句,測(cè)試該集群實(shí)例與下一數(shù)據(jù)庫(kù)實(shí)例之間的連接是否正常,若SQL測(cè)試正常則設(shè)置轉(zhuǎn)移成功標(biāo)識(shí)為TRUE。上述的集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,其中,所述步驟d)通過(guò)向集群中的其他實(shí)例發(fā)送網(wǎng)絡(luò)故障的假信號(hào),讓其他實(shí)例主動(dòng)關(guān)閉與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例的連接,并全部轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例上;所述步驟d)收到該集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例的斷連信息后,接著通過(guò)判斷物理連接,確認(rèn)該集群實(shí)例已經(jīng)成功轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例后,再?gòu)?qiáng)制斷開集群中所有其他實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例的連接,使得所有集群實(shí)例都轉(zhuǎn)移連接到在下一數(shù)據(jù)庫(kù)實(shí)例上。本專利技術(shù)對(duì)比現(xiàn)有技術(shù)有如下的有益效果:本專利技術(shù)提供的集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,在發(fā)生單集群實(shí)例與數(shù)據(jù)庫(kù)節(jié)點(diǎn)網(wǎng)絡(luò)故障時(shí),能夠讓集群所有實(shí)例連接在同一個(gè)節(jié)點(diǎn)上,確保所有實(shí)例的數(shù)據(jù)庫(kù)操作都能正常提交,避免數(shù)據(jù)丟失。附圖說(shuō)明圖1為本專利技術(shù)使用的集群實(shí)例多數(shù)據(jù)源連接結(jié)構(gòu)示意圖;圖2為集群實(shí)例多數(shù)據(jù)源故障轉(zhuǎn)移數(shù)據(jù)丟失示意圖;圖3為本專利技術(shù)集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移流程示意圖;圖4為本專利技術(shù)集群實(shí)例多數(shù)據(jù)源綁定故障轉(zhuǎn)移示意圖。具體實(shí)施方式下面結(jié)合附圖和實(shí)施例對(duì)本專利技術(shù)作進(jìn)一步的描述。圖1為本專利技術(shù)使用的集群實(shí)例多數(shù)據(jù)源連接結(jié)構(gòu)示意圖。請(qǐng)參見圖1,本專利技術(shù)使用的應(yīng)用實(shí)例集群結(jié)構(gòu)與數(shù)據(jù)庫(kù)RAC的連接模式為failover模式。將同一個(gè)數(shù)據(jù)源DS1部署在集群上,集群內(nèi)所有實(shí)例都會(huì)在啟動(dòng)時(shí)初始化一個(gè)已與數(shù)據(jù)庫(kù)節(jié)點(diǎn)RAC1創(chuàng)建多個(gè)連接的連接池CP1。而數(shù)據(jù)庫(kù)節(jié)點(diǎn)RAC2則作為故障轉(zhuǎn)移的備用節(jié)點(diǎn)。圖2為集群實(shí)例多數(shù)據(jù)源故障轉(zhuǎn)移數(shù)據(jù)丟失示意圖。請(qǐng)繼續(xù)參見圖2,當(dāng)集群實(shí)例server2與數(shù)據(jù)庫(kù)節(jié)點(diǎn)RAC1產(chǎn)生網(wǎng)絡(luò)故障時(shí),集群實(shí)例server2上的數(shù)據(jù)庫(kù)連接池CP1將會(huì)自動(dòng)故障轉(zhuǎn)移到數(shù)據(jù)庫(kù)節(jié)點(diǎn)RAC2上。而此時(shí),集群實(shí)例server1和server3與數(shù)據(jù)庫(kù)節(jié)點(diǎn)RAC1的網(wǎng)絡(luò)連接正常,不會(huì)轉(zhuǎn)移到RAC2上,依然保持在RAC1上。此時(shí),集群里的實(shí)例包含不同數(shù)據(jù)庫(kù)節(jié)點(diǎn)的連接。應(yīng)用APP1分別從不同的集群實(shí)例上提交數(shù)據(jù)庫(kù)操作變更,由于他們都是使用同一個(gè)數(shù)據(jù)源DS1,被視為同一資源,只會(huì)在該數(shù)據(jù)源的一個(gè)實(shí)例上進(jìn)行調(diào)用,而這個(gè)數(shù)據(jù)源包含不同RAC實(shí)例連接,只一個(gè)會(huì)被提交,其他的丟失。所以集群實(shí)例server1,server3上的數(shù)據(jù)庫(kù)操作提交正常完成,而集群實(shí)例server2上的數(shù)據(jù)庫(kù)操作提交丟失。圖3為本專利技術(shù)集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移流程示意圖;圖4為本專利技術(shù)集群實(shí)例多數(shù)據(jù)源綁定故障轉(zhuǎn)移示意圖。請(qǐng)參見圖3和圖4,在單個(gè)集群實(shí)例與數(shù)據(jù)庫(kù)節(jié)點(diǎn)發(fā)生網(wǎng)絡(luò)故障轉(zhuǎn)移到第二個(gè)節(jié)點(diǎn)上,導(dǎo)致集群實(shí)例里同一數(shù)據(jù)源連接在不同的數(shù)據(jù)庫(kù)節(jié)點(diǎn)上,為了避免這種模式下數(shù)據(jù)庫(kù)操作出現(xiàn)丟失的情況,在探測(cè)到有一個(gè)實(shí)例與數(shù)據(jù)庫(kù)節(jié)點(diǎn)發(fā)生網(wǎng)絡(luò)故障后,將集群里的其他實(shí)例的數(shù)據(jù)庫(kù)連接綁定轉(zhuǎn)移,實(shí)現(xiàn)所有集本文檔來(lái)自技高網(wǎng)...

【技術(shù)保護(hù)點(diǎn)】
一種集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,其特征在于,包括如下步驟:a)將同一應(yīng)用程序分布部署在多個(gè)集群服務(wù)器上,并為該應(yīng)用程序的所有集群實(shí)例至少配置連接兩個(gè)數(shù)據(jù)庫(kù)實(shí)例;b)定時(shí)探測(cè)所有集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例之間的網(wǎng)絡(luò)連接狀態(tài);c)如果某一集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例網(wǎng)絡(luò)斷連,則確認(rèn)該集群實(shí)例與下一數(shù)據(jù)庫(kù)實(shí)例之間的連接是否正常;d)如果連接正常則自動(dòng)轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例上,并強(qiáng)制集群內(nèi)所有其他實(shí)例轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例上。
【技術(shù)特征摘要】
1.一種集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,其特征在于,包括如下步驟:a)將同一應(yīng)用程序分布部署在多個(gè)集群服務(wù)器上,并為該應(yīng)用程序的所有集群實(shí)例至少配置連接兩個(gè)數(shù)據(jù)庫(kù)實(shí)例;b)定時(shí)探測(cè)所有集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例之間的網(wǎng)絡(luò)連接狀態(tài);c)如果某一集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例網(wǎng)絡(luò)斷連,則確認(rèn)該集群實(shí)例與下一數(shù)據(jù)庫(kù)實(shí)例之間的連接是否正常;d)如果連接正常則自動(dòng)轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例上,并強(qiáng)制集群內(nèi)所有其他實(shí)例轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例上;所述步驟b)中定時(shí)記錄所有集群實(shí)例與所有數(shù)據(jù)庫(kù)實(shí)例之間的網(wǎng)絡(luò)連接狀態(tài),并將狀態(tài)存入數(shù)據(jù)庫(kù)中記錄,每一記錄包括集群實(shí)例、數(shù)據(jù)源、數(shù)據(jù)庫(kù)實(shí)例、故障轉(zhuǎn)移標(biāo)識(shí)以及轉(zhuǎn)移成功標(biāo)識(shí);當(dāng)出現(xiàn)某一集群實(shí)例與當(dāng)前數(shù)據(jù)庫(kù)實(shí)例網(wǎng)絡(luò)斷連,所述步驟c)設(shè)置故障轉(zhuǎn)移標(biāo)識(shí)為TRUE,并拋出異常信息通知集群內(nèi)其他實(shí)例,當(dāng)該集群實(shí)例轉(zhuǎn)移連接到下一數(shù)據(jù)庫(kù)實(shí)例后,所述步驟d)設(shè)置轉(zhuǎn)移成功標(biāo)識(shí)為TRUE,確認(rèn)集群中的其他實(shí)例進(jìn)行故障轉(zhuǎn)移。2.如權(quán)利要求1所述的集群實(shí)例多數(shù)據(jù)源綁定的故障轉(zhuǎn)移方法,其特征在于,所述步驟a)中的數(shù)據(jù)庫(kù)實(shí)...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:程永新,宋輝,陳愛珍,
申請(qǐng)(專利權(quán))人:上海新炬網(wǎng)絡(luò)信息技術(shù)有限公司,
類型:發(fā)明
國(guó)別省市:上海;31
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。