本發(fā)明涉及it系統(tǒng)的災(zāi)難恢復(fù)方法,更具體地說是指基于sql?server的實例對象同步災(zāi)備方法、裝置及計算機(jī)設(shè)備。
背景技術(shù):
1、sql?server?提供了多種高可用性和災(zāi)難恢復(fù)解決方案,以確保數(shù)據(jù)庫在故障或災(zāi)難發(fā)生時能夠快速恢復(fù)并保持可用性。以下是一些常見的?sql?server?高可用性方案:
2、數(shù)據(jù)庫鏡像,這是一種實時同步技術(shù),通過在主數(shù)據(jù)庫和鏡像數(shù)據(jù)庫之間進(jìn)行日志傳輸來保持?jǐn)?shù)據(jù)的同步。鏡像數(shù)據(jù)庫能夠迅速接管主數(shù)據(jù)庫的工作,從而實現(xiàn)高可用性。其優(yōu)點在于配置簡單且支持快速故障轉(zhuǎn)移,但缺點是無法實現(xiàn)讀寫分離,鏡像數(shù)據(jù)庫的業(yè)務(wù)不可讀。
3、alwayson?可用性組,自sql?server?2012引入的這一高可用性和災(zāi)難恢復(fù)解決方案,通過在多個數(shù)據(jù)庫之間進(jìn)行同步復(fù)制來實現(xiàn)高可用性,支持讀寫分離和多站點部署。其優(yōu)點包括支持讀寫分離和多站點部署,同時提供快速故障轉(zhuǎn)移,但配置相對復(fù)雜,且需要windows?server故障轉(zhuǎn)移集群的支持。
4、alwayson?故障轉(zhuǎn)移群集實例,基于?windows?server?故障轉(zhuǎn)移群集的這一?sqlserver?實例級別高可用性解決方案,通過在多個節(jié)點之間共享存儲來實現(xiàn)故障轉(zhuǎn)移。其優(yōu)點是能夠提供實例級別的高可用性,并支持多節(jié)點,但缺點是需要共享存儲,配置相對復(fù)雜。
5、備份和恢復(fù),雖然這不是嚴(yán)格意義上的高可用性解決方案,但作為重要的災(zāi)難恢復(fù)手段,通過定期備份數(shù)據(jù)庫并在災(zāi)難發(fā)生時進(jìn)行恢復(fù),可以最大程度地減少數(shù)據(jù)丟失。其優(yōu)點在于簡單易用,并支持多種備份策略。
6、盡管現(xiàn)有的?sql?server高可用性方案在一定程度上滿足了業(yè)務(wù)系統(tǒng)的災(zāi)備需求,但仍然存在一些不足之處。比如,備份和恢復(fù)方法的恢復(fù)時間較長,并且數(shù)據(jù)存在丟失的風(fēng)險。數(shù)據(jù)庫鏡像和alwayson可用性組雖然提供了用戶數(shù)據(jù)庫的數(shù)據(jù)同步和災(zāi)備切換能力,但缺乏對sql?server實例的全局系統(tǒng)級服務(wù)器對象的同步,例如登錄賬戶、服務(wù)器配置信息、憑據(jù)、鏈接服務(wù)器、作業(yè)、service?broker應(yīng)用程序以及服務(wù)器級觸發(fā)器等。這一不足使得某些應(yīng)用程序在依賴于單個用戶數(shù)據(jù)庫范圍之外的信息、實體或?qū)ο髸r,數(shù)據(jù)庫管理員在進(jìn)行容災(zāi)切換前需要手動檢查主備實例中的上述配置信息是否一致,過程既耗時又容易出錯。
7、因此,有必要設(shè)計一種新的方法,實現(xiàn)更加高效、可靠以及可自定義的sql?server實例對象同步的災(zāi)備。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺陷,提供基于sql?server的實例對象同步災(zāi)備方法、裝置及計算機(jī)設(shè)備。
2、為實現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:基于sql?server的實例對象同步災(zāi)備方法,包括:
3、獲取sql?server源端和目標(biāo)端實例的資產(chǎn)配置信息,并匹配容災(zāi)對關(guān)系,以得到源端和目標(biāo)端;
4、選擇需要同步的實例對象并配置同步策略;
5、從所述源端和目標(biāo)端實例中根據(jù)同步策略分別采集需要同步的實例對象的數(shù)據(jù),并進(jìn)行比對,以得到比對結(jié)果;
6、根據(jù)所述比對結(jié)果采用同步策略批量同步差異的實例對象至目標(biāo)端實例中,以得到同步結(jié)果;
7、展示所述同步結(jié)果,且當(dāng)同步過程出現(xiàn)異常情況時進(jìn)行異常情況的預(yù)警。
8、其進(jìn)一步技術(shù)方案為:所述獲取sql?server源端和目標(biāo)端實例的資產(chǎn)配置信息,并匹配容災(zāi)對關(guān)系,以得到源端和目標(biāo)端,包括:
9、添加sql?server源端和目標(biāo)端實例的資產(chǎn)配置信息;其中,資產(chǎn)配置信息包括訪問地址、端口、用戶名、密碼;
10、當(dāng)主機(jī)及實例連接正常時,使用主備檢測邏輯來識別并匹配所述資產(chǎn)配置信息的容災(zāi)對關(guān)系,以確定源端和目標(biāo)端。
11、其進(jìn)一步技術(shù)方案為:需要同步的實例對象包括服務(wù)器配置、鏈接服務(wù)器、作業(yè)、登錄名、權(quán)限、service?broker應(yīng)用程序、服務(wù)器級觸發(fā)器,所述同步策略包括按分鐘、小時、天或周設(shè)置采集頻率的策略。
12、其進(jìn)一步技術(shù)方案為:所述從所述源端和目標(biāo)端實例中根據(jù)同步策略分別采集需要同步的實例對象的數(shù)據(jù),并進(jìn)行比對,以得到比對結(jié)果,包括:
13、從所述源端和目標(biāo)端的實例中根據(jù)同步策略提取相應(yīng)實例對象的視圖或存儲過程,以獲取源端的需要同步的實例對象的數(shù)據(jù)以及目標(biāo)端中所有實例對象的數(shù)據(jù);
14、循環(huán)遍歷源端的需要同步的實例對象的數(shù)據(jù),并將源端的需要同步的實例對象的數(shù)據(jù)與目標(biāo)端中所有實例對象的數(shù)據(jù)進(jìn)行全面比對,以得到比對結(jié)果。
15、其進(jìn)一步技術(shù)方案為:所述循環(huán)遍歷源端的需要同步的實例對象的數(shù)據(jù),并將源端的需要同步的實例對象的數(shù)據(jù)與目標(biāo)端中所有實例對象的數(shù)據(jù)進(jìn)行全面比對,以得到比對結(jié)果,包括:
16、遍歷源端實例對象,提取源端實例對象的元數(shù)據(jù),再遍歷目標(biāo)端實例對象,提取目標(biāo)端實例對象的元數(shù)據(jù);
17、將源端的需要同步的實例對象的標(biāo)識以及對象名、目標(biāo)端的所有實例對象的標(biāo)識以及對象名作為key值,以得到源端key值以及目標(biāo)端key值;
18、以所述源端key值為比對基準(zhǔn),篩選出所述目標(biāo)端中與所述源端key值對應(yīng)的實例對象同名的實例對象所對應(yīng)的key值;
19、判斷對應(yīng)的目標(biāo)端key值與源端key值是否相同;
20、若對應(yīng)的目標(biāo)端key值與源端key值相同,則當(dāng)源端對應(yīng)實例對象的數(shù)據(jù)的詳情內(nèi)容與所述目標(biāo)端對應(yīng)實例對象的數(shù)據(jù)的詳情內(nèi)容不同,則將兩個實例對象標(biāo)記為對象修改,以得到比對結(jié)果;
21、若對應(yīng)的目標(biāo)端key值與源端key值不同,則將源端的對應(yīng)實例對象標(biāo)記為對象新增,以得到比對結(jié)果。
22、其進(jìn)一步技術(shù)方案為:所述根據(jù)所述比對結(jié)果批量同步差異的實例對象至目標(biāo)端實例中,以得到同步結(jié)果,包括:
23、根據(jù)比對結(jié)果中標(biāo)記為對象修改的實例對象,從目標(biāo)端中刪除相對應(yīng)的數(shù)據(jù);
24、從所述源端批量選中標(biāo)記為對象新增以及對象修改的實例對象,編寫ddl腳本以生成create對象的元數(shù)據(jù)定義;
25、使用腳本連接目標(biāo)端,批量導(dǎo)入腳本以同步不存在或元數(shù)據(jù)信息不一致的實例對象數(shù)據(jù),以得到同步結(jié)果。
26、其進(jìn)一步技術(shù)方案為:所述展示所述同步結(jié)果,且當(dāng)同步過程出現(xiàn)異常情況時進(jìn)行異常情況的預(yù)警,包括:
27、展示同步結(jié)果,并在同步異常時提供告警提醒,具體記錄最近一次同步的時間和結(jié)果狀態(tài),包括源端和目標(biāo)端的對象名稱及數(shù)量,如果同步結(jié)果不成功,或者最近同步時間超過預(yù)設(shè)的告警閾值或源端存在目標(biāo)端缺失或元數(shù)據(jù)不一致的對象,觸發(fā)告警。
28、本發(fā)明還提供了基于sql?server的實例對象同步災(zāi)備裝置,包括:
29、獲取單元,用于獲取sql?server源端和目標(biāo)端實例的資產(chǎn)配置信息,并匹配容災(zāi)對關(guān)系,以得到源端和目標(biāo)端;
30、選擇單元,用于選擇需要同步的實例對象并配置同步策略;
31、比對單元,用于從所述源端和目標(biāo)端實例中根據(jù)同步策略分別采集需要同步的實例對象的數(shù)據(jù),并進(jìn)行比對,以得到比對結(jié)果;
32、同步單元,用于根據(jù)所述比對結(jié)果采用同步策略批量同步差異的實例對象至目標(biāo)端實例中,以得到同步結(jié)果;
33、展示單元,用于展示所述同步結(jié)果,且當(dāng)同步過程出現(xiàn)異常情況時進(jìn)行異常情況的預(yù)警。
34、本發(fā)明還提供了一種計算機(jī)設(shè)備,所述計算機(jī)設(shè)備包括存儲器及處理器,所述存儲器上存儲有計算機(jī)程序,所述處理器執(zhí)行所述計算機(jī)程序時實現(xiàn)上述的方法。
35、本發(fā)明還提供了一種存儲介質(zhì),所述存儲介質(zhì)存儲有計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實現(xiàn)上述的方法。
36、本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:本發(fā)明通過獲取源端和目標(biāo)端sql?server實例的資產(chǎn)配置信息,并匹配容災(zāi)關(guān)系,明確同步對象;用戶可以選擇所需同步的實例對象并配置相應(yīng)的同步策略;接著,系統(tǒng)根據(jù)同步策略采集并比對源端和目標(biāo)端的數(shù)據(jù),以識別差異;最后,依據(jù)比對結(jié)果批量同步差異對象,并在同步過程中提供異常預(yù)警,確保整個過程高效、可靠且可自定義。
37、下面結(jié)合附圖和具體實施例對本發(fā)明作進(jìn)一步描述。