欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法和系統(tǒng)的制作方法

文檔序號:7701356閱讀:150來源:國知局
專利名稱:一種處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本申請涉及數(shù)據(jù)庫領(lǐng)域,特別涉及一種處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法和系統(tǒng)。
背景技術(shù)
隨著數(shù)據(jù)庫技術(shù)和計算機網(wǎng)絡(luò)技術(shù)的不斷進步,越來越多企業(yè)的信息系統(tǒng)使用數(shù)據(jù)庫作為存儲和管理數(shù)據(jù)的工具。企業(yè)依賴于數(shù)據(jù)庫系統(tǒng)運行其關(guān)鍵業(yè)務(wù)應(yīng)用,幾小時甚至是幾分鐘的數(shù)據(jù)庫服務(wù)中斷都是不允許的,因此在這些應(yīng)用中保證數(shù)據(jù)庫的高可用性至關(guān)重要。高可用性(HA,High Availability)是指,通過盡量縮短因計劃中的日常維護操作或計劃外的突發(fā)系統(tǒng)故障所導(dǎo)致的服務(wù)中斷時間,向用戶提供持續(xù)不間斷的服務(wù)。數(shù)據(jù)庫系統(tǒng)使用計算機網(wǎng)絡(luò)將地理位置分散而邏輯上集中的數(shù)據(jù)連接起來,可以 通過在不同物理位置提供冗余數(shù)據(jù)的方式提供數(shù)據(jù)庫系統(tǒng)的高可用性。雖然在不同物理位置提供冗余數(shù)據(jù),但通常只由一臺數(shù)據(jù)庫服務(wù)器即主數(shù)據(jù)庫服務(wù)器對外提供服務(wù),一臺或多臺數(shù)據(jù)庫服務(wù)器作為備份服務(wù)器,當(dāng)主數(shù)據(jù)庫服務(wù)器計劃停機或出現(xiàn)故障不能提供數(shù)據(jù)服務(wù)時,一臺備份服務(wù)器接管主數(shù)據(jù)庫服務(wù)器的工作,使數(shù)據(jù)庫用戶能持續(xù)使用數(shù)據(jù),實現(xiàn)了數(shù)據(jù)庫系統(tǒng)的高可用性。上述主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移是由數(shù)據(jù)庫系統(tǒng)本身提供的機制來完成的,這種機制僅限于數(shù)據(jù)庫系統(tǒng)內(nèi)部。用戶通常感覺不到主備數(shù)據(jù)庫服務(wù)器狀態(tài)的變化是因為在用戶和數(shù)據(jù)庫之間針對不同的用戶需求存在不同的應(yīng)用層,這些應(yīng)用層在主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移后采取了與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作,使得從用戶的角度感覺不到計劃內(nèi)操作引起的或計劃外故障發(fā)生導(dǎo)致的主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移。然而,通常不同的應(yīng)用層使用自己的檢測邏輯檢測數(shù)據(jù)庫的主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移,當(dāng)檢測到發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移后,各應(yīng)用層根據(jù)檢測的結(jié)果執(zhí)行相應(yīng)的切換操作。由于檢測的時間和檢測的間隔各不相同,這就可能導(dǎo)致在主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移后的一段時間內(nèi),各應(yīng)用層以不同的數(shù)據(jù)庫服務(wù)器為當(dāng)前的主數(shù)據(jù)庫服務(wù)器。進一步,當(dāng)進行數(shù)據(jù)庫寫操作時,將導(dǎo)致數(shù)據(jù)不一致??梢?,簡單地采用冗余方式提供數(shù)據(jù)庫高可用性的同時,可能帶來數(shù)據(jù)庫狀態(tài)不一致的問題。

發(fā)明內(nèi)容
有鑒于此,本申請?zhí)峁┮环N處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法和系統(tǒng),針對數(shù)據(jù)庫應(yīng)用層提供統(tǒng)一的狀態(tài)轉(zhuǎn)移方案,從而在一定程度上避免當(dāng)數(shù)據(jù)庫系統(tǒng)主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移時各應(yīng)用層離散的切換操作所導(dǎo)致的數(shù)據(jù)庫及其周邊系統(tǒng)的狀態(tài)不一致。本申請?zhí)峁┝艘环N處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,包括步驟對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測;如果檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移,通知數(shù)據(jù)庫應(yīng)用層以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。優(yōu)選地,所述對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測包括根據(jù)預(yù)置的時間間隔探測主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。優(yōu)選地,所述對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測,具體包括根據(jù)數(shù)據(jù)庫策略,向數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果來判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并確定轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器。優(yōu)選地,所述向數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果來判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并確定轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器包括向上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器發(fā)送操作請求;如果未能接收到所述上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器針對所述操作請求的正確的處理結(jié)果,則判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并向其他數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服 務(wù)器。優(yōu)選地,所述向數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果來判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并確定轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器包括向系統(tǒng)中所有的數(shù)據(jù)庫服務(wù)器發(fā)送操作請求;根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器;如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。優(yōu)選地,所述對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測,具體包括通過讀取包含有當(dāng)前主數(shù)據(jù)庫服務(wù)器標識信息的配置文件的方式,獲知當(dāng)前的主數(shù)據(jù)庫服務(wù)器,如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。優(yōu)選地,所述如果檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移,通知數(shù)據(jù)庫應(yīng)用層,具體包括使用推模式,將攜帶有已發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移和當(dāng)前的主數(shù)據(jù)庫服務(wù)器標識信息的通知推送到數(shù)據(jù)庫應(yīng)用層。優(yōu)選地,所述對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測包括對計劃中的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移操作進行統(tǒng)一檢測;或?qū)Ψ怯媱澫到y(tǒng)故障導(dǎo)致的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移進行統(tǒng)一檢測。優(yōu)選地,還包括接收數(shù)據(jù)庫應(yīng)用層在啟動時或者啟動后的特定時間內(nèi)的注冊請求,并在注冊信息中保存應(yīng)用層所在的連接建立相關(guān)信息;所述通知數(shù)據(jù)庫應(yīng)用層,具體包括讀取注冊信息獲得數(shù)據(jù)庫應(yīng)用層的連接建立相關(guān)信息,通過連接建立相關(guān)信息通知數(shù)據(jù)庫應(yīng)用層。優(yōu)選地,所述主備數(shù)據(jù)庫服務(wù)器包括分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫集群中的主備數(shù)據(jù)庫服務(wù)器。本申請?zhí)峁┮环N處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),包括
主備狀態(tài)轉(zhuǎn)移檢測單元,用于對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測;主備狀態(tài)轉(zhuǎn)移通知單元,用于當(dāng)檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移后,通知數(shù)據(jù)庫的應(yīng)用層,以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。優(yōu)選地,所述主備狀態(tài)轉(zhuǎn)移檢測單元,具體用于根據(jù)預(yù)置的時間間隔探測主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。優(yōu)選地,所述主備狀態(tài)轉(zhuǎn)移檢測單元,進一步包括操作請求發(fā)送子單元,用于根據(jù)數(shù)據(jù)庫策略,向數(shù)據(jù)庫服務(wù)器發(fā)送操作請求;主備狀態(tài)轉(zhuǎn)移判斷子單元,用于根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果來判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并確定轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器。 優(yōu)選地,所述操作請求發(fā)送子單元,具體用于向上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器發(fā)送操作請求;所述主備狀態(tài)轉(zhuǎn)移判斷子單元,具體用于如果未能接收到所述上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器針對所述操作請求的正確的處理結(jié)果,則判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移;并觸發(fā)所述操作請求發(fā)送子單元向其它數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,以便根據(jù)當(dāng)前的主數(shù)據(jù)庫服務(wù)器返回的正確的執(zhí)行結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器。優(yōu)選地,所述操作請求發(fā)送子單元,具體用于向系統(tǒng)中所有的數(shù)據(jù)庫服務(wù)器發(fā)送操作請求;所述主備狀態(tài)轉(zhuǎn)移判斷子單元,具體用于根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器;如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。優(yōu)選地,所述主備狀態(tài)轉(zhuǎn)移檢測單元,進一步包括配置文件讀取子單元,用于通過讀取包含有當(dāng)前主數(shù)據(jù)庫服務(wù)器標識信息的配置文件的方式,獲知當(dāng)前的主數(shù)據(jù)庫服務(wù)器,如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。優(yōu)選地,所述主備狀態(tài)轉(zhuǎn)移通知單元,具體用于使用推模式,將攜帶有已發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移和當(dāng)前的主數(shù)據(jù)庫服務(wù)器標識信息的通知推送到數(shù)據(jù)庫應(yīng)用層。優(yōu)選地,所述主備狀態(tài)轉(zhuǎn)移檢測單元,具體用于對計劃中的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移操作進行統(tǒng)一檢測;或?qū)Ψ怯媱澫到y(tǒng)故障導(dǎo)致的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移進行統(tǒng)一檢測。優(yōu)選地,進一步包括應(yīng)用層注冊單元,用于接收數(shù)據(jù)庫應(yīng)用層在啟動時或者啟動后的特定時間內(nèi)的注冊請求,并在注冊信息中保存應(yīng)用層所在的連接建立相關(guān)信息;所述主備狀態(tài)轉(zhuǎn)移通知單元,具體用于當(dāng)主備狀態(tài)轉(zhuǎn)移通知單元檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移后,讀取注冊信息獲得數(shù)據(jù)庫應(yīng)用層的連接建立相關(guān)信息,通過連接建立相關(guān)信息通知數(shù)據(jù)庫應(yīng)用層,以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。優(yōu)選地,所述主備數(shù)據(jù)庫服務(wù)器包括分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫集群中的主備數(shù)據(jù)庫服務(wù)器。根據(jù)本申請?zhí)峁┑木唧w實施例,本申請公開了以下技術(shù)效果
本申請實施例中,引入了對主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)換的統(tǒng)一處理,即對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測,當(dāng)發(fā)現(xiàn)發(fā)生狀態(tài)轉(zhuǎn)移時,通知數(shù)據(jù)庫的各應(yīng)用層,從而保證了各應(yīng)用層能夠在同一時間獲得統(tǒng)一的關(guān)于主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)換的通知,并根據(jù)該通知消息執(zhí)行各應(yīng)用層相應(yīng)的切換方案。采用統(tǒng)一檢測和通知的方法在一定程度上避免了各應(yīng)用層離散地進行各自的檢測和轉(zhuǎn)換操作所導(dǎo)致的數(shù)據(jù)庫狀態(tài)不一致,提供數(shù)據(jù)庫高可用性的同時,保證了數(shù)據(jù)庫狀態(tài)的一致性。另外,雖然各個應(yīng)用層對狀態(tài)轉(zhuǎn)移的具體切換操作是不同的,但對于檢測主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移的過程卻是相同的,針對數(shù)據(jù)庫應(yīng)用層采用統(tǒng)一的檢測和通知邏輯,有助于通用性的實現(xiàn),降低了數(shù)據(jù)庫與其應(yīng)用層之間的復(fù)雜性。當(dāng)然,實施本申請的任一產(chǎn)品并不一定需要同時達到以上所述的所有優(yōu)點。


圖I為本申請的方法流程圖;
圖2為本申請第一實施例系統(tǒng)結(jié)構(gòu)示意圖;圖3為本申請的系統(tǒng)結(jié)構(gòu)圖。
具體實施例方式為了使本申請的上述目的、特征、和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本申請作進一步詳細的說明。參考圖I所示,該圖為本申請的方法流程圖,包括以下步驟SlOl :對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測;S102:如果檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移,通知數(shù)據(jù)庫應(yīng)用層以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。在本申請實施中,通過統(tǒng)一的對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移檢測和通知,使得數(shù)據(jù)庫不同的應(yīng)用層能夠在同一時間范圍內(nèi)得到統(tǒng)一的關(guān)于主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移信息,進而啟動各自相應(yīng)的切換操作,從而保證各應(yīng)用層連接的數(shù)據(jù)庫服務(wù)器是當(dāng)前主數(shù)據(jù)庫服務(wù)器,在一定程度上避免了現(xiàn)有技術(shù)中可能出現(xiàn)的不同應(yīng)用層連接到不同數(shù)據(jù)庫服務(wù)器,進而導(dǎo)致對不同數(shù)據(jù)源的數(shù)據(jù)進行更新等操作而引起的數(shù)據(jù)庫及其周邊系統(tǒng)的狀態(tài)不一致。參考圖2所示,該圖為本申請實施例所述的數(shù)據(jù)庫的狀態(tài)轉(zhuǎn)移系統(tǒng)組成示意圖。該系統(tǒng)中,數(shù)據(jù)庫系統(tǒng)當(dāng)前有主備數(shù)據(jù)庫服務(wù)器,并且由主數(shù)據(jù)庫服務(wù)器對外提供數(shù)據(jù)庫服務(wù),使用該數(shù)據(jù)庫的應(yīng)用層有η個,各應(yīng)用層在數(shù)據(jù)庫發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移時需要執(zhí)行不同的與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。在實際應(yīng)用中,數(shù)據(jù)庫系統(tǒng)可能發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移的原因可能是有計劃的對數(shù)據(jù)庫服務(wù)器進行維護操作,例如定時輪流對當(dāng)前主數(shù)據(jù)庫服務(wù)器進行重啟,或發(fā)現(xiàn)當(dāng)主數(shù)據(jù)庫服務(wù)器存在潛在的硬件或軟件故障,雖然該故障還沒有發(fā)生但可以有計劃地提前關(guān)閉該數(shù)據(jù)庫服務(wù)器進行故障排除。另外,也可能是主數(shù)據(jù)庫服務(wù)器在運行中出現(xiàn)了突發(fā)的硬件或軟件故障,即非計劃中的數(shù)據(jù)服務(wù)中斷。無論上述那種原因,都將會導(dǎo)致主備數(shù)據(jù)庫服務(wù)器之間的狀態(tài)轉(zhuǎn)移,即原備份數(shù)據(jù)庫服務(wù)器將接替原主數(shù)據(jù)庫服務(wù)器成為當(dāng)前主數(shù)據(jù)庫服務(wù)器,并繼續(xù)對外提供數(shù)據(jù)服務(wù)器。本申請實施例就是要對上述各種情況下的主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移事件進行統(tǒng)一處理,以便數(shù)據(jù)庫應(yīng)用層及時執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。S101)對主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移的狀態(tài)進行統(tǒng)一檢測。為避免各應(yīng)用層對數(shù)據(jù)庫離散地進行各自的檢測和轉(zhuǎn)換操作所導(dǎo)致的數(shù)據(jù)不一致,本申請實施例引入了對主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移的統(tǒng)一檢測。統(tǒng)一檢測是否發(fā)生主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)換可以采取定時檢測的方法,即根據(jù)預(yù)置的時間間隔探測是否發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)換。具體在探測是否發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移時,可以通過多種方式實現(xiàn)。在其中一種實施方式下,由于數(shù)據(jù)庫系統(tǒng)策略規(guī)定主備數(shù)據(jù)庫服務(wù)器提供的數(shù)據(jù)服務(wù)不同,即利用主備數(shù)據(jù)庫服務(wù)器對同一操作請求的不同處理結(jié)果來獲得某一檢測時刻的主數(shù)據(jù)庫服務(wù)器,通過比較上一檢測時間獲得的主數(shù)據(jù)庫服務(wù)器得到主備數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的檢測結(jié)果。
當(dāng)檢測到主數(shù)據(jù)庫服務(wù)器發(fā)送狀態(tài)轉(zhuǎn)移時,對于如何獲知哪一臺數(shù)據(jù)庫服務(wù)器為當(dāng)前的主數(shù)據(jù)庫服務(wù)器,有不同的實現(xiàn)方法。通常在數(shù)據(jù)庫服務(wù)器進行主備狀態(tài)轉(zhuǎn)移時,數(shù)據(jù)庫系統(tǒng)根據(jù)特定的選舉算法從備份數(shù)據(jù)庫服務(wù)器中選舉當(dāng)前的主數(shù)據(jù)庫服務(wù)器。因此,一種實現(xiàn)方法是當(dāng)檢測到主數(shù)據(jù)庫服務(wù)器發(fā)送狀態(tài)轉(zhuǎn)移時,使用該數(shù)據(jù)庫系統(tǒng)特定的選舉算法計算出當(dāng)前的主數(shù)據(jù)庫服務(wù)器。這種實現(xiàn)方法的前提是已知數(shù)據(jù)庫系統(tǒng)的特定選舉算法,并且當(dāng)該選舉算法發(fā)生改變時,也要進行對應(yīng)的調(diào)整以計算出當(dāng)前的主數(shù)據(jù)庫服務(wù)器。另一種實現(xiàn)方法是在未知該特定算法的情況下,使用與檢測主數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移類似的方法獲知當(dāng)前主數(shù)據(jù)庫服務(wù)器。第二種方法獨立于數(shù)據(jù)庫系統(tǒng)的選舉算法,不需要已知數(shù)據(jù)庫系統(tǒng)的特定選舉算法,并且當(dāng)數(shù)據(jù)庫系統(tǒng)的選舉算法發(fā)生改變時,不需要進行對應(yīng)的調(diào)整依然能檢測出當(dāng)前的主數(shù)據(jù)庫服務(wù)器。根據(jù)上述第二種方法,具體可以采用以下實現(xiàn)方式向系統(tǒng)中所有的數(shù)據(jù)庫服務(wù)器發(fā)送操作請求;由于不同的數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果,只有主數(shù)據(jù)庫服務(wù)器返回正確的執(zhí)行結(jié)果,由此可以確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器;如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。另一種實現(xiàn)方法是向上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器發(fā)送操作請求;如果未能接收到所述上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器針對所述操作請求的正確的處理結(jié)果,則該數(shù)據(jù)庫當(dāng)前已經(jīng)不再能提供主數(shù)據(jù)庫服務(wù),因此判定已發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移;向其它數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,由于只有當(dāng)前的主數(shù)據(jù)庫服務(wù)器能夠執(zhí)行該數(shù)據(jù)操作,因此通過主數(shù)據(jù)庫服務(wù)器返回的正確的處理結(jié)果確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器。第二種方法避免了第一種方法中每次檢查都向系統(tǒng)中所有的數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,而是向上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器發(fā)送操作請求。雖然在第二種方法中當(dāng)未能接收到上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器針的正確的處理結(jié)果時,也向其它數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,但由于發(fā)生主備狀態(tài)轉(zhuǎn)移的頻率相對于檢查頻率來說是小很多的。因此,第二種方法一定程度上節(jié)省了系統(tǒng)資源和網(wǎng)絡(luò)帶寬。在本實施例中,數(shù)據(jù)庫系統(tǒng)的策略規(guī)定只有主數(shù)據(jù)庫提供數(shù)據(jù)的更新或?qū)懭氩僮鞣?wù),備份數(shù)據(jù)庫僅提供只讀操作服務(wù),因此可以使用以下步驟探測是否發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)換初始狀態(tài)下,在某一檢測時刻,向所有主備數(shù)據(jù)庫服務(wù)器各發(fā)送一條數(shù)據(jù)庫的更新操作請求,主數(shù)據(jù)庫服務(wù)器返回正確的處理結(jié)果,得到當(dāng)前主數(shù)據(jù)庫服務(wù)器的標識信息。該標識信息可以是位置信息如IP地址,也可以是該數(shù)據(jù)庫服務(wù)器的身份信息如主機名。等待設(shè)定的時間間隔后,向上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器發(fā)送一條數(shù)據(jù)庫的更新操作請求,若該主數(shù)據(jù)庫服務(wù)器仍然返回正確的處理結(jié)果,則判定未發(fā)生主備數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移;若該主數(shù)據(jù)庫服務(wù)器返回處理結(jié)果異常,則判定已發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移,并則向系統(tǒng)中的備份數(shù)據(jù)庫服務(wù)器發(fā)送數(shù)據(jù)庫更新操作請求, 由于該備份數(shù)據(jù)庫服務(wù)器已經(jīng)成為當(dāng)前的主數(shù)據(jù)庫服務(wù)器向外提供數(shù)據(jù)服務(wù),因此接收到該數(shù)據(jù)庫服務(wù)器返回的正確的處理結(jié)果,即確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器。檢測結(jié)果包含主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移和當(dāng)前的主數(shù)據(jù)庫服務(wù)器的標識信息。上述檢測方法中發(fā)送“更新操作請求”,對不同的數(shù)據(jù)庫策略存在不同的替代方案,例如,若數(shù)據(jù)庫的策略為主數(shù)據(jù)庫服務(wù)器提供所有的數(shù)據(jù)服務(wù)包括讀、寫入和更新數(shù)據(jù)服務(wù),而備份數(shù)據(jù)庫服務(wù)器不提供任何數(shù)據(jù)服務(wù),針對這樣的數(shù)據(jù)庫,可發(fā)送讀數(shù)據(jù)操作請求進行檢測,因為只有主數(shù)據(jù)庫服務(wù)器才會返回正確的執(zhí)行結(jié)果,而備份數(shù)據(jù)庫服務(wù)器不會返回正確的執(zhí)行結(jié)果,由此也可以獲知主備數(shù)據(jù)庫服務(wù)器的工作狀態(tài)。除了采用上述方式進行檢測以外,還可以采用其他的方式來實現(xiàn)。例如,由于數(shù)據(jù)庫系統(tǒng)具有配置文件,該配置文件會隨著數(shù)據(jù)庫服務(wù)器的主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移實時更新,也即,配置文件中記錄了當(dāng)前哪個數(shù)據(jù)庫服務(wù)器為主狀態(tài),并且記錄有該數(shù)據(jù)庫服務(wù)器的標識信息。因此,在需要檢測主數(shù)據(jù)庫服務(wù)器狀態(tài)時,可以首先通過讀取該配置文件的方式,獲知當(dāng)前的主數(shù)據(jù)庫服務(wù)器,并與上一檢測時刻的讀取結(jié)果進行比較,以獲知是否發(fā)生狀態(tài)轉(zhuǎn)移。S102如果檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移,通知數(shù)據(jù)庫應(yīng)用層以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。一旦檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移,可以立即將數(shù)據(jù)庫發(fā)生狀態(tài)轉(zhuǎn)移的消息通知給使用數(shù)據(jù)庫的各應(yīng)用層,使得數(shù)據(jù)庫的應(yīng)用層能夠盡可能在同一時間獲得關(guān)于數(shù)據(jù)庫狀態(tài)的通知消息。該通知消息里包含數(shù)據(jù)庫發(fā)生了主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移,并且包含了當(dāng)前主數(shù)據(jù)庫服務(wù)器的標識信息。由于數(shù)據(jù)庫系統(tǒng)中主備數(shù)據(jù)庫服務(wù)器和各個應(yīng)用層可能分布在不同的物理位置,它們之間通過網(wǎng)絡(luò)連接,所以存在時延,但是由于傳播時延在數(shù)量級上遠小于探測時間間隔,因此可以忽略這種正常網(wǎng)絡(luò)時延帶來的影響。為更加迅速地通知數(shù)據(jù)庫應(yīng)用層,可采用預(yù)先注冊的方法,即數(shù)據(jù)庫應(yīng)用層在啟動時或者啟動后的特定時間內(nèi)進行注冊,注冊的信息包括應(yīng)用層所在的連接建立相關(guān)信息,這些信息可以是應(yīng)用層名稱以及位置信息如應(yīng)用層所在主機IP地址。以便當(dāng)檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移后,根據(jù)注冊表內(nèi)所包括的注冊信息將所述通知發(fā)送給已注冊的應(yīng)用層。通知應(yīng)用層可以采用推模式,例如采用Zookeeper的Watch機制來實現(xiàn),即當(dāng)檢測到主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移的事件后,將包含已發(fā)生了主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移和當(dāng)前主數(shù)據(jù)庫服務(wù)器標識信息的通知消息推送給各個應(yīng)用層。當(dāng)然,在實際應(yīng)用中,除了這種推模式以外,也可以采用其他方式來實現(xiàn),這里不再一一列舉。數(shù)據(jù)庫的應(yīng)用層接收到主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移的通知后執(zhí)行與現(xiàn)有技術(shù)類似的相應(yīng)的狀態(tài)切換操作。例如,根據(jù)數(shù)據(jù)庫的主備數(shù)據(jù)庫服務(wù)器狀態(tài)調(diào)整數(shù)據(jù)源對象,具體包括斷開與原主數(shù)據(jù)庫服務(wù)器的連接,并與轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器建立連接,從而通過新建立的連接,實現(xiàn)使用轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器提供的數(shù)據(jù)服務(wù)。由于數(shù)據(jù)庫各應(yīng)用層需要執(zhí)行的與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作各有所不同,因此,將執(zhí)行各自切換操作的功能依然保留在每個應(yīng)用層內(nèi)部實現(xiàn),使得各個應(yīng)用層能夠利用統(tǒng)一的通知消息完成各自的切換操作,保證了操作的正確性。根據(jù)具體應(yīng)用需要,在主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移之后,為獲得下一輪數(shù)據(jù)庫狀態(tài)的檢測消息,可能需要調(diào)整檢測操作,如轉(zhuǎn)變探測的目標節(jié)點,由檢測原主數(shù)據(jù)庫服務(wù)器變更為檢測當(dāng)前的主數(shù)據(jù)庫服務(wù)器,以便在等待設(shè)定的時間間隔后向當(dāng)前主數(shù)據(jù)庫服務(wù)器發(fā)送用于檢測的數(shù)據(jù)庫操作。所述調(diào)整操作的執(zhí)行可以在檢測到數(shù)據(jù)庫主備數(shù)據(jù)庫服務(wù)器發(fā)生轉(zhuǎn)移后立即執(zhí)行,也可以在向應(yīng)用層發(fā)出通知后立即執(zhí)行。本申請所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移方法可應(yīng)用于分布式數(shù)據(jù)庫。在分布式數(shù)據(jù)庫·中部署有數(shù)據(jù)庫集群,該數(shù)據(jù)庫集群擁有一個主數(shù)據(jù)庫服務(wù)器對外提供數(shù)據(jù)服務(wù)以及至少一個備份數(shù)據(jù)庫服務(wù)器。當(dāng)主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移時,可通過本申請所訴的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移方法實現(xiàn)數(shù)據(jù)庫應(yīng)用層與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。參考圖3所示,該圖為本申請第一實施例所述處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法對應(yīng)的系統(tǒng)結(jié)構(gòu)圖,該系統(tǒng)包括主備狀態(tài)轉(zhuǎn)移檢測單元301和主備狀態(tài)轉(zhuǎn)移通知單元302。主備狀態(tài)轉(zhuǎn)移檢測單元用于對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測。主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移可能是對計劃中的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移操作進行統(tǒng)一檢測或?qū)Ψ怯媱澫到y(tǒng)故障導(dǎo)致的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移進行統(tǒng)一檢測。為盡可能避免各應(yīng)用層單獨對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移檢測,從而導(dǎo)致在不同的時間獲得狀態(tài)轉(zhuǎn)移的檢測結(jié)果,該檢測操作由本申請實施例所引入的主備狀態(tài)檢測單元統(tǒng)一完成。具體檢測是否發(fā)生主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)換可以采取不同的方式,主備狀態(tài)轉(zhuǎn)移檢測單元可用于根據(jù)預(yù)置的時間間隔探測主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。主備狀態(tài)轉(zhuǎn)移檢測單元,進一步可包括操作請求發(fā)送子單元和主備狀態(tài)轉(zhuǎn)移判斷子單元。操作請求發(fā)送子單元,用于根據(jù)數(shù)據(jù)庫策略,向數(shù)據(jù)庫服務(wù)器發(fā)送操作請求。主備狀態(tài)轉(zhuǎn)移判斷子單元,用于根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果來判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并確定轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器。在具體實現(xiàn)時,一種方法是操作請求發(fā)送子單元,向上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器發(fā)送操作請求;主備狀態(tài)轉(zhuǎn)移判斷子單元如果未能接收到所述上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器針對所述操作請求的正確的處理結(jié)果,則判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移;并觸發(fā)所述操作請求發(fā)送子單元向其它數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,以便根據(jù)當(dāng)前的主數(shù)據(jù)庫服務(wù)器返回的正確的執(zhí)行結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器。另一種方法是操作請求發(fā)送子單元,具體向系統(tǒng)中所有的數(shù)據(jù)庫服務(wù)器發(fā)送操作請求;主備狀態(tài)轉(zhuǎn)移判斷子單元根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器;如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。
在數(shù)據(jù)庫系統(tǒng)具有記錄了當(dāng)前主數(shù)據(jù)庫服務(wù)器及其標識信息的配置文件時,主備狀態(tài)轉(zhuǎn)移檢測單元,進一步包括配置文件讀取單元,用于通過讀取包含有當(dāng)前主數(shù)據(jù)庫服務(wù)器標識信息的配置文件的方式,獲知當(dāng)前的主數(shù)據(jù)庫服務(wù)器,主備狀態(tài)轉(zhuǎn)移檢測單元根據(jù)當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。當(dāng)檢測到發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移后,為更加迅速地通知數(shù)據(jù)庫應(yīng)用層,可進一步增加應(yīng)用層注冊單元,用于接收數(shù)據(jù)庫應(yīng)用層在啟動時或者啟動后的特定時間內(nèi)的注冊請求,并在注冊信息中保存應(yīng)用層所在的連接建立相關(guān)信息。當(dāng)主備狀態(tài)轉(zhuǎn)移通知單元檢測到發(fā)生主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移,讀取注冊信息獲得數(shù)據(jù)庫應(yīng)用層的連接建立相關(guān)信息,通過連接建立相關(guān)信息通知數(shù)據(jù)庫應(yīng)用層,以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。在檢測到發(fā)生了主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移后,主備狀態(tài)轉(zhuǎn)移通知單元將數(shù)據(jù)庫發(fā)生狀態(tài)轉(zhuǎn)移的消息統(tǒng)一通知給使用數(shù)據(jù)庫的各個應(yīng)用層,使得數(shù)據(jù)庫的應(yīng)用層能夠盡可能在同一時間獲得關(guān)于數(shù)據(jù)庫狀態(tài)的通知消息。該通知消息里包含數(shù)據(jù)庫已發(fā)生主備數(shù)據(jù) 庫服務(wù)器狀態(tài)轉(zhuǎn)移,并且包含了當(dāng)前主數(shù)據(jù)庫服務(wù)器的標識信息,因此數(shù)據(jù)庫應(yīng)用層能夠執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。主備狀態(tài)轉(zhuǎn)移通知單元,可以使用推模式,將攜帶有已發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移和當(dāng)前的主數(shù)據(jù)庫服務(wù)器標識信息的通知推送到數(shù)據(jù)庫應(yīng)用層。在具體實現(xiàn)時,可以將上述各單元作為一種單獨的檢測通知服務(wù)或應(yīng)用程序,運行在獨立的服務(wù)器上,同時,可以在各應(yīng)用層分別部署監(jiān)聽模塊。檢測通知服務(wù)或應(yīng)用程序通過網(wǎng)絡(luò)與數(shù)據(jù)庫、應(yīng)用層監(jiān)聽模塊連接,并在檢測到主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移消息時,統(tǒng)一通知給應(yīng)用層監(jiān)聽模塊以便應(yīng)用層啟動與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。本實施例所描述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),可用于分布式數(shù)據(jù)庫系統(tǒng)中,主備數(shù)據(jù)庫服務(wù)器包括分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫集群中的主備數(shù)據(jù)庫服務(wù)器。以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本申請的保護范圍之內(nèi)。
權(quán)利要求
1.一種處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,包括步驟 對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測; 如果檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移,通知數(shù)據(jù)庫應(yīng)用層以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。
2.根據(jù)權(quán)利要求I所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,所述對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測包括根據(jù)預(yù)置的時間間隔探測主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。
3.根據(jù)權(quán)利要求I或2所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,所述對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測,具體包括根據(jù)數(shù)據(jù)庫策略,向數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果來判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并確定轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器。
4.根據(jù)權(quán)利要求3所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,所述向數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果來判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并確定轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器包括 向上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器發(fā)送操作請求; 如果未能接收到所述上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器針對所述操作請求的正確的處理結(jié)果,則判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并向其他數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器。
5.根據(jù)權(quán)利要求3所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,所述向數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果來判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并確定轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器包括 向系統(tǒng)中所有的數(shù)據(jù)庫服務(wù)器發(fā)送操作請求; 根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器; 如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。
6.根據(jù)權(quán)利要求I或2所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,所述對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測,具體包括 通過讀取包含有當(dāng)前主數(shù)據(jù)庫服務(wù)器標識信息的配置文件的方式,獲知當(dāng)前的主數(shù)據(jù)庫服務(wù)器,如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。
7.根據(jù)權(quán)利要求I所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,所述如果檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移,通知數(shù)據(jù)庫應(yīng)用層,具體包括使用推模式,將攜帶有已發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移和當(dāng)前的主數(shù)據(jù)庫服務(wù)器標識信息的通知推送到數(shù)據(jù)庫應(yīng)用層。
8.根據(jù)權(quán)利要求I所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,所述對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測包括 對計劃中的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移操作進行統(tǒng)一檢測;或 對非計劃系統(tǒng)故障導(dǎo)致的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移進行統(tǒng)一檢測。
9.根據(jù)權(quán)利要求I所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,還包括接收數(shù)據(jù)庫應(yīng)用層在啟動時或者啟動后的特定時間內(nèi)的注冊請求,并在注冊信息中保存應(yīng)用層所在的連接建立相關(guān)信息; 所述通知數(shù)據(jù)庫應(yīng)用層,具體包括 讀取注冊信息獲得數(shù)據(jù)庫應(yīng)用層的連接建立相關(guān)信息,通過連接建立相關(guān)信息通知數(shù)據(jù)庫應(yīng)用層。
10.根據(jù)權(quán)利要求1、2、7-9任一項所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法,其特征在于,所述主備數(shù)據(jù)庫服務(wù)器包括分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫集群中的主備數(shù)據(jù)庫服務(wù)器。
11.一種處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于,包括 主備狀態(tài)轉(zhuǎn)移檢測單元,用于對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測; 主備狀態(tài)轉(zhuǎn)移通知單元,用于當(dāng)檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移后,通知數(shù)據(jù)庫的應(yīng)用層,以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。
12.根據(jù)權(quán)利要求11所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于,所述主備狀態(tài)轉(zhuǎn)移檢測單元,具體用于根據(jù)預(yù)置的時間間隔探測主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。
13.根據(jù)權(quán)利要求11或12所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于,所述主備狀態(tài)轉(zhuǎn)移檢測單元,進一步包括 操作請求發(fā)送子單元,用于根據(jù)數(shù)據(jù)庫策略,向數(shù)據(jù)庫服務(wù)器發(fā)送操作請求; 主備狀態(tài)轉(zhuǎn)移判斷子單元,用于根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果來判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移,并確定轉(zhuǎn)移后的主數(shù)據(jù)庫服務(wù)器。
14.根據(jù)權(quán)利要求13所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于, 所述操作請求發(fā)送子單元,具體用于向上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器發(fā)送操作請求; 所述主備狀態(tài)轉(zhuǎn)移判斷子單元,具體用于如果未能接收到所述上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器針對所述操作請求的正確的處理結(jié)果,則判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移;并觸發(fā)所述操作請求發(fā)送子單元向其它數(shù)據(jù)庫服務(wù)器發(fā)送操作請求,以便根據(jù)當(dāng)前的主數(shù)據(jù)庫服務(wù)器返回的正確的執(zhí)行結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器。
15.根據(jù)權(quán)利要求13所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于, 所述操作請求發(fā)送子單元,具體用于向系統(tǒng)中所有的數(shù)據(jù)庫服務(wù)器發(fā)送操作請求; 所述主備狀態(tài)轉(zhuǎn)移判斷子單元,具體用于根據(jù)各數(shù)據(jù)庫服務(wù)器對所述操作請求的不同處理結(jié)果,確定當(dāng)前的主數(shù)據(jù)庫服務(wù)器;如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。
16.根據(jù)權(quán)利要求11或12所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于,所述主備狀態(tài)轉(zhuǎn)移檢測單元,進一步包括 配置文件讀取子單元,用于通過讀取包含有當(dāng)前主數(shù)據(jù)庫服務(wù)器標識信息的配置文件的方式,獲知當(dāng)前的主數(shù)據(jù)庫服務(wù)器,如果當(dāng)前的主數(shù)據(jù)庫服務(wù)器與上一檢測時刻獲知的主數(shù)據(jù)庫服務(wù)器不同,判定發(fā)生主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移。
17.根據(jù)權(quán)利要求11所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于,所述主備狀態(tài)轉(zhuǎn)移通知單元,具體用于使用推模式,將攜帶有已發(fā)生主備數(shù)據(jù)庫服務(wù)器狀態(tài)轉(zhuǎn)移和當(dāng)前的主數(shù)據(jù)庫服務(wù)器標識信息的通知推送到數(shù)據(jù)庫應(yīng)用層。
18.根據(jù)權(quán)利要求11所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于,所述主備狀態(tài)轉(zhuǎn)移檢測單元,具體用于對計劃中的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移操作進行統(tǒng)一檢測;或 對非計劃系統(tǒng)故障導(dǎo)致的主備數(shù)據(jù)庫服務(wù)器轉(zhuǎn)移進行統(tǒng)一檢測。
19.根據(jù)權(quán)利要求11所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于,進一步包括應(yīng)用層注冊單元,用于接收數(shù)據(jù)庫應(yīng)用層在啟動時或者啟動后的特定時間內(nèi)的注冊請求,并在注冊信息中保存應(yīng)用層所在的連接建立相關(guān)信息; 所述主備狀態(tài)轉(zhuǎn)移通知單元,具體用于當(dāng)主備狀態(tài)轉(zhuǎn)移通知單元檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移后,讀取注冊信息獲得數(shù)據(jù)庫應(yīng)用層的連接建立相關(guān)信息,通過連接建立相關(guān)信息通知數(shù)據(jù)庫應(yīng)用層,以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。
20.根據(jù)權(quán)利要求11、12、17-19任一項所述的處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),其特征在于,所述主備數(shù)據(jù)庫服務(wù)器包括分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫集群中的主備數(shù)據(jù)庫服務(wù)器。
全文摘要
本申請公開了一種處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的方法和系統(tǒng)。本申請的方法包括對主備數(shù)據(jù)庫服務(wù)器的狀態(tài)轉(zhuǎn)移進行統(tǒng)一檢測;如果檢測到主備數(shù)據(jù)庫服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)移,通知數(shù)據(jù)庫應(yīng)用層以便所述數(shù)據(jù)庫應(yīng)用層接收到該通知后執(zhí)行與主備數(shù)據(jù)庫服務(wù)器狀態(tài)對應(yīng)的切換操作。本申請還公開了一種處理數(shù)據(jù)庫狀態(tài)轉(zhuǎn)移的系統(tǒng),該系統(tǒng)包括主備狀態(tài)檢測單元和主備狀態(tài)轉(zhuǎn)移通知單元。通過本申請,在一定程度上避免了各應(yīng)用層離散地進行各自的檢測和切換操作所導(dǎo)致的數(shù)據(jù)庫及其周邊系統(tǒng)狀態(tài)不一致,提供數(shù)據(jù)庫高可用性的同時,保證了數(shù)據(jù)庫系統(tǒng)狀態(tài)的一致性。
文檔編號H04L29/08GK102841895SQ20111016931
公開日2012年12月26日 申請日期2011年6月22日 優(yōu)先權(quán)日2011年6月22日
發(fā)明者王福強 申請人:阿里巴巴集團控股有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
孟州市| 武定县| 德州市| 新沂市| 吕梁市| 拉萨市| 彰武县| 尤溪县| 平邑县| 田阳县| 颍上县| 潢川县| 托克托县| 潍坊市| 黄山市| 友谊县| 华坪县| 安图县| 凤凰县| 上思县| 呼图壁县| 湛江市| 海伦市| 肃南| 巧家县| 库车县| 隆尧县| 且末县| 盈江县| 慈利县| 衡山县| 宜君县| 黄石市| 定结县| 尉氏县| 台江县| 纳雍县| 榆社县| 六枝特区| 上高县| 金寨县|