本技術(shù)涉及數(shù)據(jù)庫,更具體地,涉及數(shù)據(jù)庫同步方法、系統(tǒng)、計(jì)算機(jī)設(shè)備集群、計(jì)算機(jī)存儲(chǔ)介質(zhì)、和計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
1、數(shù)據(jù)庫系統(tǒng)中包括實(shí)例級(jí)數(shù)據(jù)和數(shù)據(jù)庫級(jí)數(shù)據(jù)。例如,實(shí)例級(jí)權(quán)限數(shù)據(jù)包括針對(duì)數(shù)據(jù)庫系統(tǒng)實(shí)例的登錄賬戶的權(quán)限數(shù)據(jù),諸如實(shí)例服務(wù)角色、實(shí)例登錄賬戶、以及角色所具備的權(quán)限等信息。這些權(quán)限數(shù)據(jù)控制針對(duì)該實(shí)例的操作和訪問權(quán)限。另一方面,客戶可以在數(shù)據(jù)庫系統(tǒng)中創(chuàng)建各種用戶數(shù)據(jù)庫(本文也簡(jiǎn)稱為用戶庫)來存儲(chǔ)業(yè)務(wù)數(shù)據(jù)以及相應(yīng)的數(shù)據(jù)庫級(jí)權(quán)限數(shù)據(jù)。數(shù)據(jù)庫級(jí)權(quán)限數(shù)據(jù)包括這些用戶庫下的用戶賬戶以及其對(duì)應(yīng)角色與權(quán)限等信息。這些信息用于控制相應(yīng)用戶對(duì)用戶庫中的數(shù)據(jù)的操作和訪問權(quán)限。
2、實(shí)例級(jí)權(quán)限數(shù)據(jù)被存儲(chǔ)在包括數(shù)據(jù)庫系統(tǒng)的實(shí)例(例如,sql?server實(shí)例)內(nèi)置的系統(tǒng)數(shù)據(jù)庫(本文也簡(jiǎn)稱為系統(tǒng)庫)中,而數(shù)據(jù)庫級(jí)權(quán)限數(shù)據(jù)被存儲(chǔ)在用戶庫中。當(dāng)對(duì)數(shù)據(jù)庫系統(tǒng)的不同副本進(jìn)行同步操作時(shí),各副本的系統(tǒng)庫與用戶庫中的數(shù)據(jù)以不同方式被處理。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的實(shí)施例提供了一種數(shù)據(jù)庫同步方案。
2、在第一方面,提供了一種數(shù)據(jù)庫同步方法。該方法包括:響應(yīng)于第一數(shù)據(jù)庫實(shí)例的第一實(shí)例級(jí)數(shù)據(jù)的改變,更新第一數(shù)據(jù)庫實(shí)例的第一管理庫中的第二實(shí)例級(jí)數(shù)據(jù),第一實(shí)例級(jí)數(shù)據(jù)被存儲(chǔ)在第一數(shù)據(jù)庫實(shí)例的第一系統(tǒng)庫中;以及響應(yīng)于第二實(shí)例級(jí)數(shù)據(jù)的更新,向第二數(shù)據(jù)庫實(shí)例發(fā)送更新后的第二實(shí)例級(jí)數(shù)據(jù),更新后的第二實(shí)例級(jí)數(shù)據(jù)用于更新第二數(shù)據(jù)庫實(shí)例的第三實(shí)例級(jí)數(shù)據(jù),第三實(shí)例級(jí)數(shù)據(jù)被存儲(chǔ)在第二數(shù)據(jù)庫實(shí)例的第二管理庫中。由此,能夠使得用戶無需針對(duì)數(shù)據(jù)庫系統(tǒng)的應(yīng)被同步的副本重新進(jìn)行實(shí)例級(jí)配置。并且與周期性實(shí)例級(jí)同步方案相比,這種方法降低了該副本中實(shí)例級(jí)信息缺失的可能性。此外,該副本能夠及時(shí)獲取可以用于在適當(dāng)時(shí)獨(dú)立完成同步的數(shù)據(jù),減少了對(duì)諸如主副本的特定副本的依賴。
3、在第一方面的一些實(shí)施例中,第一實(shí)例級(jí)數(shù)據(jù)的改變包括第一數(shù)據(jù)庫實(shí)例對(duì)第一實(shí)例級(jí)數(shù)據(jù)執(zhí)行的至少一種操作,并且該方法還包括:建立定義了觸發(fā)動(dòng)作的觸發(fā)器,觸發(fā)動(dòng)作與第一數(shù)據(jù)庫實(shí)例對(duì)第一實(shí)例級(jí)數(shù)據(jù)執(zhí)行的操作的類型相對(duì)應(yīng)。由此,能夠針對(duì)數(shù)據(jù)要被同步到其他副本的主副本,有效監(jiān)聽其系統(tǒng)庫中實(shí)例級(jí)數(shù)據(jù)的改變。
4、在第一方面的一些實(shí)施例中,響應(yīng)于第一數(shù)據(jù)庫實(shí)例的第一實(shí)例級(jí)數(shù)據(jù)的改變更新第一數(shù)據(jù)庫實(shí)例的第一管理庫中的第二實(shí)例級(jí)數(shù)據(jù)包括:基于第一數(shù)據(jù)庫實(shí)例對(duì)第一實(shí)例級(jí)數(shù)據(jù)執(zhí)行的操作的類型,觸發(fā)器執(zhí)行相對(duì)應(yīng)的觸發(fā)動(dòng)作以更新第二實(shí)例級(jí)數(shù)據(jù)。由此,能夠在主副本的系統(tǒng)庫中的實(shí)例級(jí)數(shù)據(jù)發(fā)生改變時(shí)及時(shí)將改變同步到主副本的管理庫中,從而使得該管理庫能夠作為向其他副本同步實(shí)例級(jí)數(shù)據(jù)的中介。
5、在第一方面的一些實(shí)施例中,第一數(shù)據(jù)庫實(shí)例對(duì)第一實(shí)例級(jí)數(shù)據(jù)執(zhí)行的操作的類型包括以下一項(xiàng)或多項(xiàng):針對(duì)第一實(shí)例級(jí)數(shù)據(jù)的創(chuàng)建操作;針對(duì)第一實(shí)例級(jí)數(shù)據(jù)的刪除操作;或者針對(duì)第一實(shí)例級(jí)數(shù)據(jù)的修改操作。由此,能夠?qū)Σ煌愋偷膶?shí)例級(jí)數(shù)據(jù)更新操作進(jìn)行監(jiān)聽,從而支持觸發(fā)對(duì)應(yīng)的適當(dāng)動(dòng)作來將向主副本的管理庫同步系統(tǒng)庫中的實(shí)例級(jí)數(shù)據(jù)。
6、在第一方面的一些實(shí)施例中,該方法還包括:第二數(shù)據(jù)庫實(shí)例基于接收到的更新后的第二實(shí)例級(jí)數(shù)據(jù),更新第三實(shí)例級(jí)數(shù)據(jù);以及基于第三實(shí)例級(jí)數(shù)據(jù),更新第二數(shù)據(jù)庫實(shí)例的第四實(shí)例級(jí)數(shù)據(jù),第四實(shí)例級(jí)數(shù)據(jù)被存儲(chǔ)在第二數(shù)據(jù)庫實(shí)例的第二系統(tǒng)庫中。由此,輔助副本可以獨(dú)立地完成其上實(shí)例級(jí)數(shù)據(jù)的同步,這樣減少了對(duì)主副本的依賴并且使得同步架構(gòu)易于擴(kuò)展。
7、在第一方面的一些實(shí)施例中,基于第三實(shí)例級(jí)數(shù)據(jù)更新第二數(shù)據(jù)庫實(shí)例的第四實(shí)例級(jí)數(shù)據(jù)包括:檢測(cè)第四實(shí)例級(jí)數(shù)據(jù)與第三實(shí)例級(jí)數(shù)據(jù)之間是否存在差異;以及如果檢測(cè)到存在差異,則基于第三實(shí)例級(jí)數(shù)據(jù)來更新第四實(shí)例級(jí)數(shù)據(jù)。由此,要被同步的副本能夠按需執(zhí)行更新動(dòng)作,以達(dá)成與主副本的同步。
8、在第一方面的一些實(shí)施例中,檢測(cè)第四實(shí)例級(jí)數(shù)據(jù)與第三實(shí)例級(jí)數(shù)據(jù)之間是否存在差異包括:當(dāng)自上次檢測(cè)以來經(jīng)過預(yù)定時(shí)間間隔時(shí),檢測(cè)是否存在差異;或者當(dāng)?shù)谒膶?shí)例級(jí)數(shù)據(jù)將被使用前,檢測(cè)是否存在差異。由此,要被同步的副本能夠根據(jù)不同的條件來按需執(zhí)行自身與主副本的同步。
9、在第一方面的一些實(shí)施例中,向第二數(shù)據(jù)庫實(shí)例發(fā)送更新后的第二實(shí)例級(jí)數(shù)據(jù)包括:利用數(shù)據(jù)庫系統(tǒng)中針對(duì)用戶庫的數(shù)據(jù)同步模型,向第二數(shù)據(jù)庫實(shí)例發(fā)送更新后的第二實(shí)例級(jí)數(shù)據(jù)。由此,實(shí)例級(jí)數(shù)據(jù)在主副本和其他副本之間的傳遞能夠通過數(shù)據(jù)庫級(jí)的同步模型來容易地達(dá)成。
10、在第一方面的一些實(shí)施例中,第一數(shù)據(jù)庫實(shí)例是數(shù)據(jù)庫系統(tǒng)的主實(shí)例,第二數(shù)據(jù)庫實(shí)例是數(shù)據(jù)庫系統(tǒng)的備實(shí)例或只讀實(shí)例。由此,提供了根據(jù)本公開的方法的一種適用場(chǎng)景。
11、在第二方面,提供了一種數(shù)據(jù)庫同步系統(tǒng)。該系統(tǒng)包括:更新裝置,用于響應(yīng)于第一數(shù)據(jù)庫實(shí)例的第一實(shí)例級(jí)數(shù)據(jù)的改變,更新第一數(shù)據(jù)庫實(shí)例的第一管理庫中的第二實(shí)例級(jí)數(shù)據(jù),第一實(shí)例級(jí)數(shù)據(jù)被存儲(chǔ)在第一數(shù)據(jù)庫實(shí)例的第一系統(tǒng)庫中;以及發(fā)送裝置,響應(yīng)于第二實(shí)例級(jí)數(shù)據(jù)的更新,向第二數(shù)據(jù)庫實(shí)例發(fā)送更新后的第二實(shí)例級(jí)數(shù)據(jù),更新后的第二實(shí)例級(jí)數(shù)據(jù)用于更新第二數(shù)據(jù)庫實(shí)例的第三實(shí)例級(jí)數(shù)據(jù),第三實(shí)例級(jí)數(shù)據(jù)被存儲(chǔ)在第二數(shù)據(jù)庫實(shí)例的第二管理庫中。
12、在第二方面的一些實(shí)施例中,第一實(shí)例級(jí)數(shù)據(jù)的改變包括第一數(shù)據(jù)庫實(shí)例對(duì)第一實(shí)例級(jí)數(shù)據(jù)執(zhí)行的至少一種操作,并且該系統(tǒng)還包括:建立裝置,用于建立定義了觸發(fā)動(dòng)作的觸發(fā)器,觸發(fā)動(dòng)作與第一數(shù)據(jù)庫實(shí)例對(duì)第一實(shí)例級(jí)數(shù)據(jù)執(zhí)行的操作的類型相對(duì)應(yīng)。
13、在第二方面的一些實(shí)施例中,更新裝置包括:執(zhí)行裝置,用于基于第一數(shù)據(jù)庫實(shí)例對(duì)第一實(shí)例級(jí)數(shù)據(jù)執(zhí)行的操作的類型,使觸發(fā)器執(zhí)行相對(duì)應(yīng)的觸發(fā)動(dòng)作以更新第二實(shí)例級(jí)數(shù)據(jù)。
14、在第二方面的一些實(shí)施例中,第一數(shù)據(jù)庫實(shí)例對(duì)第一實(shí)例級(jí)數(shù)據(jù)執(zhí)行的操作的類型包括以下一項(xiàng)或多項(xiàng):針對(duì)第一實(shí)例級(jí)數(shù)據(jù)的創(chuàng)建操作;針對(duì)第一實(shí)例級(jí)數(shù)據(jù)的刪除操作;或者針對(duì)第一實(shí)例級(jí)數(shù)據(jù)的修改操作。
15、在第二方面的一些實(shí)施例中,該系統(tǒng)還包括:第二更新裝置,用于使第二數(shù)據(jù)庫實(shí)例基于接收到的更新后的第二實(shí)例級(jí)數(shù)據(jù),更新第三實(shí)例級(jí)數(shù)據(jù);以及第三更新裝置,用于基于第三實(shí)例級(jí)數(shù)據(jù),更新第二數(shù)據(jù)庫實(shí)例的第四實(shí)例級(jí)數(shù)據(jù),第四實(shí)例級(jí)數(shù)據(jù)被存儲(chǔ)在第二數(shù)據(jù)庫實(shí)例的第二系統(tǒng)庫中。
16、在第二方面的一些實(shí)施例中,第三更新裝置包括:檢測(cè)裝置,用于檢測(cè)第四實(shí)例級(jí)數(shù)據(jù)與第三實(shí)例級(jí)數(shù)據(jù)之間是否存在差異;以及實(shí)例級(jí)數(shù)據(jù)更新裝置,用于如果檢測(cè)到存在差異,則基于第三實(shí)例級(jí)數(shù)據(jù)來更新第四實(shí)例級(jí)數(shù)據(jù)。
17、在第二方面的一些實(shí)施例中,檢測(cè)裝置包括:定時(shí)檢測(cè)裝置,當(dāng)自上次檢測(cè)以來經(jīng)過預(yù)定時(shí)間間隔時(shí),檢測(cè)是否存在差異;或者使用前檢測(cè)裝置,當(dāng)?shù)谒膶?shí)例級(jí)數(shù)據(jù)將被使用前,檢測(cè)是否存在差異。
18、在第二方面的一些實(shí)施例中,發(fā)送裝置包括:同步發(fā)送裝置,用于利用數(shù)據(jù)庫系統(tǒng)中針對(duì)用戶庫的數(shù)據(jù)同步模型,向第二數(shù)據(jù)庫實(shí)例發(fā)送更新后的第二實(shí)例級(jí)數(shù)據(jù)。
19、在第二方面的一些實(shí)施例中,第一數(shù)據(jù)庫實(shí)例是數(shù)據(jù)庫系統(tǒng)的主實(shí)例,第二數(shù)據(jù)庫實(shí)例是數(shù)據(jù)庫系統(tǒng)的備實(shí)例或只讀實(shí)例。
20、在第三方面,提供了一種計(jì)算設(shè)備集群,該計(jì)算設(shè)備集群包括至少一個(gè)計(jì)算設(shè)備,每個(gè)計(jì)算設(shè)備包括處理器和存儲(chǔ)器;該至少一個(gè)計(jì)算設(shè)備的處理器用于執(zhí)行至少一個(gè)計(jì)算設(shè)備的存儲(chǔ)器中存儲(chǔ)的指令,以使得計(jì)算設(shè)備集群執(zhí)行根據(jù)上述第一方面或其任一實(shí)施例中的方法的操作。
21、在第四方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,該計(jì)算機(jī)可執(zhí)行指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)根據(jù)上述第一方面或其任一實(shí)施例中的方法的操作。
22、在第五方面,提供了一種計(jì)算機(jī)程序或計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序或計(jì)算機(jī)程序產(chǎn)品被有形地存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上并且包括計(jì)算機(jī)可執(zhí)行指令,計(jì)算機(jī)可執(zhí)行指令在被執(zhí)行時(shí)實(shí)現(xiàn)根據(jù)上述第一方面或其任一實(shí)施例中的方法的操作。