數(shù)據(jù)庫(kù)同步的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種數(shù)據(jù)庫(kù)同步的方法及裝置。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)應(yīng)用的迅速發(fā)展,人們對(duì)獲取信息的正確性和及時(shí)性的要求也越來越高。數(shù)據(jù)庫(kù)系統(tǒng)是目前存儲(chǔ)數(shù)據(jù)、檢索信息最為方便高效的手段,絕大多數(shù)企業(yè)都將信息存儲(chǔ)在數(shù)據(jù)庫(kù)中。目前數(shù)據(jù)庫(kù)系統(tǒng)的趨勢(shì)是由小型化向大型化、集中式向分布式發(fā)展,在分布式數(shù)據(jù)庫(kù)中,數(shù)據(jù)同步技術(shù)可以確保分布在不同地點(diǎn)的數(shù)據(jù)自動(dòng)同步更新,從而保證數(shù)據(jù)的一致性。
[0003]但是,數(shù)據(jù)庫(kù)在任何時(shí)間點(diǎn)都有可能發(fā)生數(shù)據(jù)丟失或崩潰,現(xiàn)有數(shù)據(jù)庫(kù)系統(tǒng)一般為主從數(shù)據(jù)庫(kù)構(gòu)架,包括一個(gè)主數(shù)據(jù)庫(kù)及多個(gè)從數(shù)據(jù)庫(kù),當(dāng)主數(shù)據(jù)庫(kù)服務(wù)器發(fā)生故障時(shí),需要將從數(shù)據(jù)庫(kù)切換為主數(shù)據(jù)庫(kù),切換過程較為復(fù)雜,在主從切換不順暢時(shí)可能使得數(shù)據(jù)服務(wù)暫停,導(dǎo)致前端業(yè)務(wù)中斷,服務(wù)的連續(xù)性降低;或?yàn)楦鱾€(gè)主數(shù)據(jù)庫(kù)提供單獨(dú)的日志備份模塊,但是需要為每一主數(shù)據(jù)庫(kù)單獨(dú)維護(hù)其相應(yīng)的日志備份模塊,維護(hù)過程復(fù)雜,增加服務(wù)端維護(hù)成本。
[0004]因此,需要實(shí)現(xiàn)一種多數(shù)據(jù)庫(kù)架構(gòu)方案,確保當(dāng)其中某一數(shù)據(jù)庫(kù)發(fā)生故障后能夠在不影響前端數(shù)據(jù)業(yè)務(wù)的情況下將故障數(shù)據(jù)庫(kù)的數(shù)據(jù)快速修復(fù),且無需單獨(dú)為每一數(shù)據(jù)庫(kù)維護(hù)相應(yīng)的日志備份模塊,不增加數(shù)據(jù)庫(kù)服務(wù)器的維護(hù)成本,最終達(dá)到數(shù)據(jù)庫(kù)的高穩(wěn)定性和高業(yè)務(wù)連續(xù)性的設(shè)計(jì)目的。
【發(fā)明內(nèi)容】
[0005]為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:
[0006]本發(fā)明的實(shí)施例提出了一種數(shù)據(jù)庫(kù)同步的方法,應(yīng)用于包括至少兩個(gè)主數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)系統(tǒng)中的第一主數(shù)據(jù)庫(kù),所述方法包括:
[0007]當(dāng)接收到數(shù)據(jù)操作請(qǐng)求時(shí),解析所述數(shù)據(jù)操作請(qǐng)求以獲取對(duì)應(yīng)的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息;
[0008]判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù);
[0009]若所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù),則根據(jù)所述數(shù)據(jù)操作信息記錄當(dāng)前已同步來自所述第二主數(shù)據(jù)庫(kù)的同步數(shù)據(jù)條目數(shù);
[0010]執(zhí)行所述數(shù)據(jù)操作命令。
[0011]優(yōu)選地,當(dāng)監(jiān)測(cè)到與所述第二主數(shù)據(jù)庫(kù)之間的通信中斷后恢復(fù)時(shí),該方法還包括:
[0012]向所述第二主數(shù)據(jù)庫(kù)發(fā)送同步恢復(fù)請(qǐng)求,其中,所述同步恢復(fù)請(qǐng)求包括所述同步數(shù)據(jù)條目數(shù);
[0013]接收所述第二主數(shù)據(jù)庫(kù)響應(yīng)于所述恢復(fù)同步請(qǐng)求發(fā)送的數(shù)據(jù)操作請(qǐng)求,其中,該數(shù)據(jù)操作請(qǐng)求為根據(jù)所述同步數(shù)據(jù)條目數(shù)在所述第二主數(shù)據(jù)庫(kù)中所確定的尚未同步的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息;
[0014]執(zhí)行該數(shù)據(jù)操作命令。
[0015]優(yōu)選地,該方法還包括:
[0016]持續(xù)地接收包括與所述第二主數(shù)據(jù)庫(kù)之間通信中斷后尚未同步的數(shù)據(jù)操作命令的數(shù)據(jù)操作請(qǐng)求,并相應(yīng)地執(zhí)行數(shù)據(jù)操作命令,以完成與所述第二主數(shù)據(jù)庫(kù)之間通信中斷恢復(fù)后尚未同步數(shù)據(jù)的數(shù)據(jù)補(bǔ)齊。
[0017]優(yōu)選地,該方法還包括:
[0018]完成與所述第二主數(shù)據(jù)庫(kù)之間通信中斷恢復(fù)后的尚未同步數(shù)據(jù)的數(shù)據(jù)補(bǔ)齊之前,當(dāng)接收到數(shù)據(jù)操作請(qǐng)求時(shí),解析所述數(shù)據(jù)操作請(qǐng)求以獲取對(duì)應(yīng)的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息;
[0019]判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的所述第二主數(shù)據(jù)庫(kù);
[0020]若所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部,則將解析得到的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息緩存至本地緩存中。
[0021 ]優(yōu)選地,該方法還包括:
[0022]完成與所述第二主數(shù)據(jù)庫(kù)之間通信中斷恢復(fù)后的尚未同步數(shù)據(jù)的數(shù)據(jù)補(bǔ)齊之后,執(zhí)行所述本地緩存中緩存的數(shù)據(jù)操作命令。
[0023]優(yōu)選地,判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù)的步驟進(jìn)一步包括:
[0024]依據(jù)所述數(shù)據(jù)操作信息判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù),其中所述數(shù)據(jù)操作信息包含用以區(qū)分所述數(shù)據(jù)操作請(qǐng)求來源的標(biāo)識(shí)。
[0025]本發(fā)明的實(shí)施例提出了一種數(shù)據(jù)庫(kù)同步的方法,應(yīng)用于包括至少兩個(gè)主數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù),所述方法包括:
[0026]當(dāng)接收到數(shù)據(jù)操作請(qǐng)求時(shí),解析所述數(shù)據(jù)操作請(qǐng)求以獲取對(duì)應(yīng)的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息;
[0027]判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第一主數(shù)據(jù)庫(kù);
[0028]若所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部,將所述數(shù)據(jù)操作請(qǐng)求同步至所述數(shù)據(jù)庫(kù)系統(tǒng)中的第一主數(shù)據(jù)庫(kù);
[0029]記錄當(dāng)前已同步至所述第一主數(shù)據(jù)庫(kù)的同步數(shù)據(jù)條目數(shù)。
[0030]優(yōu)選地,該方法還包括:
[0031]當(dāng)監(jiān)測(cè)到與所述第一主數(shù)據(jù)庫(kù)之間的通信中斷時(shí),停止將所述數(shù)據(jù)操作請(qǐng)求同步至所述第一主數(shù)據(jù)庫(kù)。
[0032]優(yōu)選地,當(dāng)監(jiān)測(cè)到與所述第一主數(shù)據(jù)庫(kù)之間的通信中斷后恢復(fù)時(shí),該方法還包括:
[0033]根據(jù)記錄的當(dāng)前已同步至所述第一主數(shù)據(jù)庫(kù)的同步數(shù)據(jù)條目數(shù),確定尚未同步至所述第一主數(shù)據(jù)庫(kù)的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息;
[0034]依據(jù)尚未同步至所述第一主數(shù)據(jù)庫(kù)的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息生成數(shù)據(jù)操作請(qǐng)求;
[0035]向所述第一主數(shù)據(jù)庫(kù)發(fā)送數(shù)據(jù)操作請(qǐng)求。
[0036]優(yōu)選地,該方法還包括:
[0037]持續(xù)地向所述第一主數(shù)據(jù)庫(kù)發(fā)送包括與所述第一主數(shù)據(jù)庫(kù)之間通信中斷后尚未同步的數(shù)據(jù)操作命令的數(shù)據(jù)操作請(qǐng)求,以完成與所述第一主數(shù)據(jù)庫(kù)之間通信中斷恢復(fù)后尚未同步數(shù)據(jù)的數(shù)據(jù)補(bǔ)齊。
[0038]本發(fā)明的實(shí)施例中提出了一種數(shù)據(jù)庫(kù)同步的裝置,應(yīng)用于包括至少兩個(gè)主數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)系統(tǒng)中的第一主數(shù)據(jù)庫(kù),所述裝置包括:
[0039]第一解析模塊,當(dāng)接收到數(shù)據(jù)操作請(qǐng)求時(shí),解析所述數(shù)據(jù)操作請(qǐng)求以獲取對(duì)應(yīng)的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息;
[0040]第一判斷模塊,判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù);
[0041 ]第一同步模塊,若所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù),則根據(jù)所述數(shù)據(jù)操作信息記錄當(dāng)前已同步來自所述第二主數(shù)據(jù)庫(kù)的同步數(shù)據(jù)條目數(shù);
[0042]第一執(zhí)行模塊,執(zhí)行所述數(shù)據(jù)操作命令。
[0043]優(yōu)選地,當(dāng)監(jiān)測(cè)到與所述第二主數(shù)據(jù)庫(kù)之間的通信中斷后恢復(fù)時(shí),該裝置還包括:
[0044]第一發(fā)送模塊,向所述第二主數(shù)據(jù)庫(kù)發(fā)送同步恢復(fù)請(qǐng)求,其中,所述同步恢復(fù)請(qǐng)求包括所述同步數(shù)據(jù)條目數(shù);
[0045]接收模塊,接收所述第二主數(shù)據(jù)庫(kù)響應(yīng)于所述恢復(fù)同步請(qǐng)求發(fā)送的數(shù)據(jù)操作請(qǐng)求,其中,該數(shù)據(jù)操作請(qǐng)求為根據(jù)所述同步數(shù)據(jù)條目數(shù)在所述第二主數(shù)據(jù)庫(kù)中所確定的尚未同步的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息;
[0046]第二執(zhí)行模塊,執(zhí)行該數(shù)據(jù)操作命令。
[0047]優(yōu)選地,該裝置還包括:
[0048]第一數(shù)據(jù)補(bǔ)齊模塊,持續(xù)地接收包括與所述第二主數(shù)據(jù)庫(kù)之間通信中斷后尚未同步的數(shù)據(jù)操作命令的數(shù)據(jù)操作請(qǐng)求,并相應(yīng)地執(zhí)行數(shù)據(jù)操作命令,以完成與所述第二主數(shù)據(jù)庫(kù)之間通信中斷恢復(fù)后尚未同步數(shù)據(jù)的數(shù)據(jù)補(bǔ)齊。
[0049]優(yōu)選地,該裝置還包括:
[0050]第二解析模塊,完成與所述第二主數(shù)據(jù)庫(kù)之間通信中斷恢復(fù)后的尚未同步數(shù)據(jù)的數(shù)據(jù)補(bǔ)齊之前,當(dāng)接收到數(shù)據(jù)操作請(qǐng)求時(shí),解析所述數(shù)據(jù)操作請(qǐng)求以獲取對(duì)應(yīng)的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息;
[0051 ]第二判斷模塊,判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的所述第二主數(shù)據(jù)庫(kù);
[0052]緩存模塊,若所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部,則將解析得到的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息緩存至本地緩存中。
[0053]優(yōu)選地,該裝置還包括:
[0054]第三執(zhí)行模塊,完成與所述第二主數(shù)據(jù)庫(kù)之間通信中斷恢復(fù)后的尚未同步數(shù)據(jù)的數(shù)據(jù)補(bǔ)齊之后,執(zhí)行所述本地緩存中緩存的數(shù)據(jù)操作命令。
[0055]優(yōu)選地,判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù),包括:
[0056]依據(jù)所述數(shù)據(jù)操作信息判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù),其中所述數(shù)據(jù)操作信息包含用以區(qū)分所述數(shù)據(jù)操作請(qǐng)求來源的標(biāo)識(shí)。
[0057]本發(fā)明的實(shí)施例提出了一種數(shù)據(jù)庫(kù)同步的裝置,應(yīng)用于包括至少兩個(gè)主數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)系統(tǒng)中的第二主數(shù)據(jù)庫(kù),所述裝置包括:
[0058]第三解析模塊,當(dāng)接收到數(shù)據(jù)操作請(qǐng)求時(shí),解析所述數(shù)據(jù)操作請(qǐng)求以獲取對(duì)應(yīng)的數(shù)據(jù)操作命令和對(duì)應(yīng)的數(shù)據(jù)操作信息;
[0059]第三判斷模塊,判斷所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部或是來自數(shù)據(jù)庫(kù)系統(tǒng)中的第一主數(shù)據(jù)庫(kù);
[0060]第二同步模塊,若所述數(shù)據(jù)操作請(qǐng)求是來自數(shù)據(jù)庫(kù)系統(tǒng)外部,將所述數(shù)據(jù)操作請(qǐng)求同步至所述數(shù)據(jù)庫(kù)系統(tǒng)中的第一主數(shù)據(jù)庫(kù);
[0061]記錄模塊,記錄當(dāng)前已同步至所述第一主數(shù)據(jù)庫(kù)的同步數(shù)據(jù)條目數(shù)。
[0062]優(yōu)選地,該裝置還包括:
[0063]停止模塊,當(dāng)監(jiān)測(cè)到與所述第一主數(shù)據(jù)庫(kù)之間的通信中斷時(shí),停止將所述數(shù)