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