本技術(shù)涉及計算機(jī)數(shù)據(jù)存儲領(lǐng)域,更具體地說涉及數(shù)據(jù)庫領(lǐng)域,特別是涉及一種主從數(shù)據(jù)庫數(shù)據(jù)同步的方法。
背景技術(shù):
1、數(shù)據(jù)庫是用來組織、存儲和管理數(shù)據(jù)的倉庫。與數(shù)據(jù)庫相適配的數(shù)據(jù)庫管理系統(tǒng)能夠使得數(shù)據(jù)管理員更加方便、直觀的管理計算機(jī)中存儲的數(shù)據(jù)。若將所有數(shù)據(jù)存儲在一個數(shù)據(jù)庫中,那么在該數(shù)據(jù)庫出現(xiàn)故障或者部署該數(shù)據(jù)庫的計算機(jī)設(shè)備出現(xiàn)故障時,可能導(dǎo)致該數(shù)據(jù)庫中的數(shù)據(jù)出現(xiàn)不可逆的丟失。
2、因此,為了保證數(shù)據(jù)的持久性和不易失性,通常不會采用單一的數(shù)據(jù)庫存儲數(shù)據(jù),而是采用主從數(shù)據(jù)庫(或主備數(shù)據(jù)庫)的形式進(jìn)行數(shù)據(jù)存儲。所謂主從數(shù)據(jù)庫是指在一個存儲系統(tǒng)部署至少兩個數(shù)據(jù)庫,即其中一個數(shù)據(jù)庫是主數(shù)據(jù)庫、另一個數(shù)據(jù)庫是從數(shù)據(jù)庫(當(dāng)然,從數(shù)據(jù)庫也可以是兩個或更多),將存儲至主數(shù)據(jù)庫中的數(shù)據(jù)也存儲至從數(shù)據(jù)庫中,以達(dá)到備份的作用。當(dāng)主數(shù)據(jù)庫中的數(shù)據(jù)丟失的情況下,還能從從數(shù)據(jù)庫中獲得數(shù)據(jù);同理,在從數(shù)據(jù)庫中的數(shù)據(jù)丟失的情況下,還能從主數(shù)據(jù)庫中獲得數(shù)據(jù)。
3、為了進(jìn)一步保證數(shù)據(jù)的持久性和不易失性,通常主數(shù)據(jù)庫和從數(shù)據(jù)庫部署在不同的計算機(jī)設(shè)備中。其中,部署主數(shù)據(jù)庫的計算機(jī)設(shè)備通常稱為主設(shè)備,部署從數(shù)據(jù)庫的計算機(jī)設(shè)備通常稱為從設(shè)備。主設(shè)備或從設(shè)備獨立運行,因此主數(shù)據(jù)庫和從數(shù)據(jù)庫也獨立運行,兩者互不干涉,主數(shù)據(jù)庫和從數(shù)據(jù)庫兩者中之一出現(xiàn)故障時不會影響另一正常數(shù)據(jù)庫的運行,進(jìn)一步提高了數(shù)據(jù)的持久性和不易失性。
技術(shù)實現(xiàn)思路
1、在相關(guān)技術(shù)中,主設(shè)備(或從設(shè)備)在對主數(shù)據(jù)庫(或從數(shù)據(jù)庫)中的數(shù)據(jù)進(jìn)行寫操作時,會生成相應(yīng)的寫操作日志,并將該寫操作日志發(fā)送至從設(shè)備(或主設(shè)備),從設(shè)備(或主設(shè)備)對該操作日志解析,解析出在主數(shù)據(jù)庫(或從數(shù)據(jù)庫)中執(zhí)行的歷史寫操作,然后從設(shè)備(或主設(shè)備)在從數(shù)據(jù)庫(或主數(shù)據(jù)庫)中執(zhí)行解析出的所有歷史操作,從而將曾寫入主數(shù)據(jù)庫(或從數(shù)據(jù)庫)的數(shù)據(jù)寫入從數(shù)據(jù)庫(或主數(shù)據(jù)庫)中。本技術(shù)實施例的目的是提供一種主從數(shù)據(jù)庫數(shù)據(jù)同步的方法、裝置、設(shè)備、介質(zhì)、芯片和計算機(jī)程序產(chǎn)品,不同于相關(guān)技術(shù)中依賴于寫操作日志進(jìn)行數(shù)據(jù)同步,從而擺脫主從數(shù)據(jù)庫數(shù)據(jù)同步對操作日志的依賴。
2、本技術(shù)實施例的第一方面提供了一種主從數(shù)據(jù)庫數(shù)據(jù)同步的方法,應(yīng)用于第一設(shè)備,在所述第一設(shè)備中部署有第一數(shù)據(jù)庫;所述方法包括:
3、監(jiān)測被部署有第二數(shù)據(jù)庫的第二設(shè)備的工作狀態(tài);所述第一數(shù)據(jù)庫和所述第二數(shù)據(jù)庫基于雙寫機(jī)制運行;
4、在監(jiān)測到所述第二設(shè)備的工作狀態(tài)是異常的情況下,對所述第一數(shù)據(jù)庫中在第一時刻之后產(chǎn)生的目標(biāo)數(shù)據(jù)添加預(yù)設(shè)的與之對應(yīng)的第一類標(biāo)簽;所述第一時刻是監(jiān)測到所述第二設(shè)備的工作狀態(tài)從正常變?yōu)楫惓r的時刻;所述目標(biāo)數(shù)據(jù)包括以下至少之一:新增數(shù)據(jù)、修改數(shù)據(jù)和被請求刪除但被中止的待刪除數(shù)據(jù);所述第一類標(biāo)簽包括:未同步標(biāo)簽和刪除標(biāo)簽;所述新增數(shù)據(jù)和所述修改數(shù)據(jù)均對應(yīng)于所述未同步標(biāo)簽,所述待刪除數(shù)據(jù)對應(yīng)于所述刪除標(biāo)簽;
5、在監(jiān)測到所述第二設(shè)備的工作狀態(tài)恢復(fù)正常的情況下,根據(jù)所述第一類標(biāo)簽和被所述第一類標(biāo)簽所標(biāo)識的數(shù)據(jù)生成同步請求,并向所述第二設(shè)備發(fā)送所述同步請求;所述同步請求攜帶有在所述第二數(shù)據(jù)庫中同步被所述第一類標(biāo)簽標(biāo)識的數(shù)據(jù)的同步操作命令。
6、本技術(shù)實施例的第二方面提供了一種主從數(shù)據(jù)庫數(shù)據(jù)同步的方法,應(yīng)用于第二設(shè)備,在所述第二設(shè)備中部署有第二數(shù)據(jù)庫;所述方法包括:
7、在接收到被部署有第一數(shù)據(jù)庫的第一設(shè)備發(fā)送的同步請求的情況下,從所述同步請求中解析出同步操作命令;所述第二數(shù)據(jù)庫和所述第一數(shù)據(jù)庫基于雙寫機(jī)制運行;
8、執(zhí)行所述同步操作命令,以在所述第二數(shù)據(jù)庫中同步所述第一數(shù)據(jù)庫中被第一類標(biāo)簽標(biāo)識的數(shù)據(jù);所述第一類標(biāo)簽是所述第一設(shè)備在監(jiān)測到所述第二設(shè)備的工作狀態(tài)是異常的期間,對所述第一數(shù)據(jù)庫中在第一時刻之后產(chǎn)生的目標(biāo)數(shù)據(jù)添加的預(yù)設(shè)的與之對應(yīng)的第一類標(biāo)簽;所述第一時刻是所述第一設(shè)備在監(jiān)測到所述第二設(shè)備的工作狀態(tài)從正常變?yōu)楫惓r的時刻;所述目標(biāo)數(shù)據(jù)包括以下至少之一:新增數(shù)據(jù)、修改數(shù)據(jù)和被請求刪除但被中止的待刪除數(shù)據(jù);所述第一類標(biāo)簽包括:未同步標(biāo)簽和刪除標(biāo)簽;所述新增數(shù)據(jù)和所述修改數(shù)據(jù)均對應(yīng)于所述未同步標(biāo)簽,所述待刪除數(shù)據(jù)對應(yīng)于所述刪除標(biāo)簽。
9、本技術(shù)實施例的第三方面提供了一種主從數(shù)據(jù)庫數(shù)據(jù)同步的裝置,所述裝置包括:
10、第一監(jiān)測模塊,用于監(jiān)測被部署有第二數(shù)據(jù)庫的第二設(shè)備的工作狀態(tài);所述第一數(shù)據(jù)庫和所述第二數(shù)據(jù)庫基于雙寫機(jī)制運行;
11、第一添加模塊,用于在監(jiān)測到所述第二設(shè)備的工作狀態(tài)是異常的情況下,對所述第一數(shù)據(jù)庫中在第一時刻之后產(chǎn)生的目標(biāo)數(shù)據(jù)添加預(yù)設(shè)的與之對應(yīng)的第一類標(biāo)簽;所述第一時刻是監(jiān)測到所述第二設(shè)備的工作狀態(tài)從正常變?yōu)楫惓r的時刻;所述目標(biāo)數(shù)據(jù)包括以下至少之一:新增數(shù)據(jù)、修改數(shù)據(jù)和被請求刪除但被中止的待刪除數(shù)據(jù);所述第一類標(biāo)簽包括:未同步標(biāo)簽和刪除標(biāo)簽;所述新增數(shù)據(jù)和所述修改數(shù)據(jù)均對應(yīng)于所述未同步標(biāo)簽,所述待刪除數(shù)據(jù)對應(yīng)于所述刪除標(biāo)簽;
12、第一發(fā)送模塊,用于在監(jiān)測到所述第二設(shè)備的工作狀態(tài)恢復(fù)正常的情況下,根據(jù)所述第一類標(biāo)簽和被所述第一類標(biāo)簽所標(biāo)識的數(shù)據(jù)生成同步請求,并向所述第二設(shè)備發(fā)送所述同步請求;所述同步請求攜帶有在所述第二數(shù)據(jù)庫中同步被所述第一類標(biāo)簽標(biāo)識的數(shù)據(jù)的同步操作命令。
13、本技術(shù)實施例的第四方面提供了一種主從數(shù)據(jù)庫數(shù)據(jù)同步的裝置,所述裝置包括:
14、第一解析模塊,用于在接收到被部署有第一數(shù)據(jù)庫的第一設(shè)備發(fā)送的同步請求的情況下,從所述同步請求中解析出同步操作命令;所述第二數(shù)據(jù)庫和所述第一數(shù)據(jù)庫基于雙寫機(jī)制運行;
15、第一執(zhí)行模塊,用于執(zhí)行所述同步操作命令,以在所述第二數(shù)據(jù)庫中同步所述第一數(shù)據(jù)庫中被第一類標(biāo)簽標(biāo)識的數(shù)據(jù);所述第一類標(biāo)簽是所述第一設(shè)備在監(jiān)測到所述第二設(shè)備的工作狀態(tài)是異常的期間,對所述第一數(shù)據(jù)庫中在第一時刻之后產(chǎn)生的目標(biāo)數(shù)據(jù)添加的預(yù)設(shè)的與之對應(yīng)的第一類標(biāo)簽;所述第一時刻是所述第一設(shè)備在監(jiān)測到所述第二設(shè)備的工作狀態(tài)從正常變?yōu)楫惓r的時刻;所述目標(biāo)數(shù)據(jù)包括以下至少之一:新增數(shù)據(jù)、修改數(shù)據(jù)和被請求刪除但被中止的待刪除數(shù)據(jù);所述第一類標(biāo)簽包括:未同步標(biāo)簽和刪除標(biāo)簽;所述新增數(shù)據(jù)和所述修改數(shù)據(jù)均對應(yīng)于所述未同步標(biāo)簽,所述待刪除數(shù)據(jù)對應(yīng)于所述刪除標(biāo)簽。
16、本技術(shù)實施例的第五方面提供了一種電子設(shè)備,所述電子設(shè)備包括:處理器和存儲器,所述存儲器存儲可在所述處理器上運行的程序或指令,所述程序或指令被所述處理器執(zhí)行時實現(xiàn)如第一方面至第二方面中任一方面所述的主從數(shù)據(jù)庫數(shù)據(jù)同步的方法的步驟。
17、本技術(shù)實施例的第六方面提供了一種可讀存儲介質(zhì),所述可讀存儲介質(zhì)上存儲程序或指令,所述程序或指令被處理器執(zhí)行時實現(xiàn)如第一方面至第二方面中任一方面所述的主從數(shù)據(jù)庫數(shù)據(jù)同步的方法的步驟。
18、本技術(shù)實施例的第七方面提供了一種芯片,所述芯片包括處理器和通信接口,所述通信接口和所述處理器耦合,所述處理器用于運行程序或指令,實現(xiàn)如第一方面至第二方面中任一方面所述的主從數(shù)據(jù)庫數(shù)據(jù)同步的方法的步驟。
19、本技術(shù)實施例的第八方面提供一種計算機(jī)程序產(chǎn)品,該程序產(chǎn)品被存儲在存儲介質(zhì)中,該程序產(chǎn)品被至少一個處理器執(zhí)行以實現(xiàn)如第一方面至第二方面中任一方面所述的主從數(shù)據(jù)庫數(shù)據(jù)同步的方法的步驟。
20、在本技術(shù)實施例中,在第一設(shè)備和第二設(shè)備的工作狀態(tài)均正常時,基于雙寫機(jī)制會同步將寫入第一數(shù)據(jù)庫中的數(shù)據(jù)寫入第二數(shù)據(jù)庫中;當(dāng)?shù)诙O(shè)備的工作狀態(tài)異常時,會對單寫入第一數(shù)據(jù)庫中的數(shù)據(jù)添加第一類標(biāo)簽;在第二設(shè)備的工作狀態(tài)恢復(fù)正常時,生成被第一類標(biāo)簽標(biāo)識的數(shù)據(jù)的同步操作命令,將同步操作命令封裝進(jìn)同步請求,并將同步請求發(fā)送至第二設(shè)備,第二設(shè)備在接收到同步請求后,執(zhí)行同步請求中的同步操作命令,以將第一數(shù)據(jù)庫中被第一類標(biāo)簽標(biāo)識的數(shù)據(jù)同步至第二數(shù)據(jù)庫中,從而實現(xiàn)在第二數(shù)據(jù)庫中寫入在第二設(shè)備異常期間單寫入第一數(shù)據(jù)庫中的數(shù)據(jù)。
21、有關(guān)技術(shù)效果更具體的相關(guān)說明請參見具體實施方式。