本申請涉及數(shù)據(jù)庫,尤其涉及一種數(shù)據(jù)庫主備切換方法、裝置、電子設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、在工業(yè)自動化領(lǐng)域?yàn)榱吮WC業(yè)務(wù)的可靠性,通常情況下各業(yè)務(wù)應(yīng)用都會采用雙機(jī)部署,避免單點(diǎn)故障,當(dāng)某一個主機(jī)節(jié)點(diǎn)發(fā)生故障時,另機(jī)節(jié)點(diǎn)要求能夠自動接管業(yè)務(wù)功能,最大程度減少對生產(chǎn)的影響。數(shù)據(jù)庫作為軟件系統(tǒng)中核心組件之一,高可用是其必不可少的能力,postgresql數(shù)據(jù)庫作為當(dāng)前非常熱門的開源數(shù)據(jù)庫,在工業(yè)自動化領(lǐng)域也有著廣泛的應(yīng)用,對于很多中小型使用場景,通常采用雙機(jī)主備冗余模式部署postgresql數(shù)據(jù)庫。
2、然而,目前postgresql數(shù)據(jù)庫的主備配置方法實(shí)現(xiàn)復(fù)雜,且可能存在單點(diǎn)故障、“腦裂”風(fēng)險等問題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本申請實(shí)施例提供了一種數(shù)據(jù)庫主備切換方法、裝置、電子設(shè)備及存儲介質(zhì),以解決現(xiàn)有技術(shù)中數(shù)據(jù)庫主備配置效率低且穩(wěn)定性不高的問題。
2、本申請實(shí)施例的第一方面,提供了一種數(shù)據(jù)庫主備切換方法,包括:
3、設(shè)置數(shù)據(jù)庫第一節(jié)點(diǎn)設(shè)備的初始化權(quán)重為第一權(quán)重,第二節(jié)點(diǎn)設(shè)備的初始化權(quán)重為第二權(quán)重,第一權(quán)重大于第二權(quán)重;
4、在第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中分別通過層交換機(jī)制組件以預(yù)設(shè)周期調(diào)用檢測腳本檢測各節(jié)點(diǎn)設(shè)備的狀態(tài);
5、響應(yīng)于確定第一節(jié)點(diǎn)設(shè)備的狀態(tài)滿足權(quán)重降級條件,將第一節(jié)點(diǎn)設(shè)備的權(quán)重值減少第三權(quán)重,或者響應(yīng)于確定第二節(jié)點(diǎn)設(shè)備的狀態(tài)滿足權(quán)重降級條件,將第二節(jié)點(diǎn)設(shè)備的權(quán)重值減少第三權(quán)重,第三權(quán)重大于第一權(quán)重與第二權(quán)重之差;
6、確定第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中權(quán)重值最大的節(jié)點(diǎn)設(shè)備為數(shù)據(jù)庫主機(jī),并將數(shù)據(jù)庫主機(jī)與預(yù)設(shè)虛擬網(wǎng)際互連協(xié)議ip關(guān)聯(lián),以使用戶通過虛擬ip訪問數(shù)據(jù)庫。
7、一些實(shí)施方式中,響應(yīng)于目標(biāo)節(jié)點(diǎn)設(shè)備為數(shù)據(jù)庫主機(jī),權(quán)重降級條件包括:目標(biāo)節(jié)點(diǎn)設(shè)備不可用;或者檢測確定目標(biāo)節(jié)點(diǎn)設(shè)備的狀態(tài)為數(shù)據(jù)庫備機(jī);或者檢測確定目標(biāo)節(jié)點(diǎn)設(shè)備與另一節(jié)點(diǎn)設(shè)備的狀態(tài)均為數(shù)據(jù)庫主機(jī),且目標(biāo)節(jié)點(diǎn)設(shè)備未連接虛擬ip;或者目標(biāo)節(jié)點(diǎn)設(shè)備與網(wǎng)關(guān)通信異常;其中,目標(biāo)節(jié)點(diǎn)設(shè)備為第一節(jié)點(diǎn)設(shè)備或者第二節(jié)點(diǎn)設(shè)備。
8、一些實(shí)施方式中,響應(yīng)于目標(biāo)節(jié)點(diǎn)設(shè)備為備庫節(jié)點(diǎn)設(shè)備,權(quán)重降級條件包括:目標(biāo)節(jié)點(diǎn)設(shè)備的數(shù)據(jù)流復(fù)制異常;或者檢測確定第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備均為數(shù)據(jù)庫備機(jī),且目標(biāo)節(jié)點(diǎn)設(shè)備未連接預(yù)設(shè)虛擬ip;或者目標(biāo)節(jié)點(diǎn)設(shè)備與網(wǎng)關(guān)通信異常;其中,目標(biāo)節(jié)點(diǎn)設(shè)備為第一節(jié)點(diǎn)設(shè)備或者第二節(jié)點(diǎn)設(shè)備。
9、一些實(shí)施方式中,在第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中分別通過層交換機(jī)制組件以預(yù)設(shè)周期調(diào)用檢測腳本檢測各節(jié)點(diǎn)設(shè)備的狀態(tài)后,該方法還包括:響應(yīng)于數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備中的層交換機(jī)制組件調(diào)用檢測腳本確定數(shù)據(jù)庫處于雙主機(jī)狀態(tài),確定數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備是否連接虛擬ip;響應(yīng)于確定數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備連接虛擬ip,保持?jǐn)?shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備的權(quán)重值;響應(yīng)于確定數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備未連接虛擬ip,確定數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備為數(shù)據(jù)庫備機(jī),并將數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備的權(quán)重值減少第三權(quán)重;或者響應(yīng)于數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備中的層交換機(jī)制組件調(diào)用檢測腳本確定數(shù)據(jù)庫處于雙備機(jī)狀態(tài),確定數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備是否連接虛擬ip;響應(yīng)于確定數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備連接虛擬ip,確定數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備為數(shù)據(jù)庫主機(jī),并保持?jǐn)?shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備的權(quán)重值;響應(yīng)于確定數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備未連接虛擬ip,將數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備的權(quán)重值減少第三權(quán)重。
10、一些實(shí)施方式中,在第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中分別通過層交換機(jī)制組件以預(yù)設(shè)周期調(diào)用檢測腳本檢測各節(jié)點(diǎn)設(shè)備的狀態(tài)后,該方法還包括:響應(yīng)于數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備中的層交換機(jī)制組件調(diào)用檢測腳本確定數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備出現(xiàn)數(shù)據(jù)流復(fù)制異常,檢測腳本執(zhí)行數(shù)據(jù)修復(fù)命令修復(fù)數(shù)據(jù)流。
11、一些實(shí)施方式中,在第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中分別通過層交換機(jī)制組件以預(yù)設(shè)周期調(diào)用檢測腳本檢測各節(jié)點(diǎn)設(shè)備的狀態(tài)后,該方法還包括:響應(yīng)于數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備中的層交換機(jī)制組件調(diào)用檢測腳本確定數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備與其他設(shè)備的通信異常,檢測數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備與網(wǎng)關(guān)的通信情況;響應(yīng)于確定數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備與網(wǎng)關(guān)的通信異常,確定數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備為數(shù)據(jù)庫備機(jī),并將數(shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備的權(quán)重值減少第三權(quán)重,否則保持?jǐn)?shù)據(jù)庫主機(jī)節(jié)點(diǎn)設(shè)備的權(quán)重;或者響應(yīng)于數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備中的層交換機(jī)制組件調(diào)用檢測腳本確定數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備與其他設(shè)備的通信異常,檢測數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備與網(wǎng)關(guān)的通信情況;響應(yīng)于確定數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備與網(wǎng)關(guān)的通信異常,將數(shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備的權(quán)重值減少第三權(quán)重,否則保持?jǐn)?shù)據(jù)庫備機(jī)節(jié)點(diǎn)設(shè)備的權(quán)重。
12、一些實(shí)施方式中,該方法還包括:確定第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中權(quán)重值最小的設(shè)備為數(shù)據(jù)庫備機(jī);其中,確定第一節(jié)點(diǎn)設(shè)備或者第二節(jié)點(diǎn)設(shè)備為數(shù)據(jù)庫主機(jī)步驟為,通過第一節(jié)點(diǎn)設(shè)備或者第二節(jié)點(diǎn)設(shè)備中的層交換機(jī)制組件調(diào)用升主腳本,將第一節(jié)點(diǎn)設(shè)備或者第二節(jié)點(diǎn)設(shè)備確定為數(shù)據(jù)庫主機(jī);確定第一節(jié)點(diǎn)設(shè)備或者第二節(jié)點(diǎn)設(shè)備為數(shù)據(jù)庫備機(jī)步驟為,通過第一節(jié)點(diǎn)設(shè)備或者第二節(jié)點(diǎn)設(shè)備中的層交換機(jī)制組件調(diào)用降備腳本,將第一節(jié)點(diǎn)設(shè)備或者第二節(jié)點(diǎn)設(shè)備確定為數(shù)據(jù)庫備機(jī)。
13、本申請實(shí)施例的第二方面,提供了一種數(shù)據(jù)庫主備切換裝置,包括:
14、初始化模塊,被配置為設(shè)置數(shù)據(jù)庫第一節(jié)點(diǎn)設(shè)備的初始化權(quán)重為第一權(quán)重,第二節(jié)點(diǎn)設(shè)備的初始化權(quán)重為第二權(quán)重,第一權(quán)重大于第二權(quán)重;
15、檢測模塊,被配置為在第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中分別通過層交換機(jī)制組件以預(yù)設(shè)周期調(diào)用檢測腳本檢測各節(jié)點(diǎn)設(shè)備的狀態(tài);
16、權(quán)重調(diào)節(jié)模塊,被配置為響應(yīng)于確定第一節(jié)點(diǎn)設(shè)備的狀態(tài)滿足權(quán)重降級條件,將第一節(jié)點(diǎn)設(shè)備的權(quán)重值減少第三權(quán)重,或者響應(yīng)于確定第二節(jié)點(diǎn)設(shè)備的狀態(tài)滿足權(quán)重降級條件,將第二節(jié)點(diǎn)設(shè)備的權(quán)重值減少第三權(quán)重,第三權(quán)重大于第一權(quán)重與第二權(quán)重之差;
17、主備設(shè)置模塊,被配置為確定第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中權(quán)重值最大的節(jié)點(diǎn)設(shè)備為數(shù)據(jù)庫主機(jī),并將數(shù)據(jù)庫主機(jī)與預(yù)設(shè)虛擬網(wǎng)際互連協(xié)議ip關(guān)聯(lián),以使用戶通過虛擬ip訪問數(shù)據(jù)庫。
18、本申請實(shí)施例的第三方面,提供了一種電子設(shè)備,包括存儲器、處理器以及存儲在存儲器中并且可在處理器上運(yùn)行的計(jì)算機(jī)程序,該處理器執(zhí)行計(jì)算機(jī)程序時實(shí)現(xiàn)上述方法的步驟。
19、本申請實(shí)施例的第四方面,提供了一種計(jì)算機(jī)可讀存儲介質(zhì),該計(jì)算機(jī)可讀存儲介質(zhì)存儲有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)上述方法的步驟。
20、本申請實(shí)施例與現(xiàn)有技術(shù)相比存在的有益效果是:本申請實(shí)施例通過為數(shù)據(jù)庫的第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備分別設(shè)置初始化權(quán)重,并在第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中分別通過層交換機(jī)制組件以預(yù)設(shè)周期調(diào)用檢測腳本檢測各節(jié)點(diǎn)設(shè)備的狀態(tài),將滿足權(quán)重降級條件的節(jié)點(diǎn)設(shè)備的權(quán)重值減少第三權(quán)重以進(jìn)行權(quán)重調(diào)節(jié),然后將權(quán)重調(diào)節(jié)后權(quán)重值最大的節(jié)點(diǎn)設(shè)備設(shè)置為數(shù)據(jù)庫主機(jī),將設(shè)置的數(shù)據(jù)庫主機(jī)與虛擬ip關(guān)聯(lián),以使用戶可以通過該虛擬ip訪問數(shù)據(jù)庫,從而實(shí)現(xiàn)了自動切換數(shù)據(jù)庫主備節(jié)點(diǎn)設(shè)備,提高了數(shù)據(jù)庫主備切換效率。
1.一種數(shù)據(jù)庫主備切換方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,響應(yīng)于目標(biāo)節(jié)點(diǎn)設(shè)備為數(shù)據(jù)庫主機(jī),所述權(quán)重降級條件包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,響應(yīng)于目標(biāo)節(jié)點(diǎn)設(shè)備為備庫節(jié)點(diǎn)設(shè)備,所述權(quán)重降級條件包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中分別通過層交換機(jī)制組件以預(yù)設(shè)周期調(diào)用檢測腳本檢測各節(jié)點(diǎn)設(shè)備的狀態(tài)后,所述方法還包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中分別通過層交換機(jī)制組件以預(yù)設(shè)周期調(diào)用檢測腳本,檢測所述各節(jié)點(diǎn)設(shè)備的狀態(tài)后,所述方法還包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,在第一節(jié)點(diǎn)設(shè)備和第二節(jié)點(diǎn)設(shè)備中分別通過層交換機(jī)制組件以預(yù)設(shè)周期調(diào)用檢測腳本,檢測所述各節(jié)點(diǎn)設(shè)備的狀態(tài)后,所述方法還包括:
7.根據(jù)權(quán)利要求1至6中任一項(xiàng)所述的方法,其特征在于,所述方法還包括:
8.一種數(shù)據(jù)庫主備切換裝置,其特征在于,包括:
9.一種電子設(shè)備,包括存儲器、處理器以及存儲在所述存儲器中并且可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計(jì)算機(jī)程序時實(shí)現(xiàn)如權(quán)利要求1至7中任一項(xiàng)所述方法的步驟。
10.一種計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀存儲介質(zhì)存儲有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)如權(quán)利要求1至7中任一項(xiàng)所述方法的步驟。