一種數(shù)據(jù)庫的系統(tǒng)、一種處理數(shù)據(jù)庫故障的方法及裝置的制造方法
【專利摘要】本發(fā)明提供了一種數(shù)據(jù)庫的系統(tǒng)、一種處理數(shù)據(jù)庫故障的方法及裝置,該方法,包括:S1:預(yù)先為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫;S2:預(yù)先將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中;S3:實時獲取所述主數(shù)據(jù)庫的每個操作;S4:在每個所述從數(shù)據(jù)庫上執(zhí)行與所述主數(shù)據(jù)庫的操作相同的操作;S5:實時檢測所述主數(shù)據(jù)庫是否發(fā)生故障,如果是,則利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫。本發(fā)明提供了一種數(shù)據(jù)庫的系統(tǒng)、一種處理數(shù)據(jù)庫故障的方法及裝置,能夠提高數(shù)據(jù)庫的可靠性。
【專利說明】
一種數(shù)據(jù)庫的系統(tǒng)、一種處理數(shù)據(jù)庫故障的方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)庫的系統(tǒng)、一種處理數(shù)據(jù)庫故障的方法及裝置?!颈尘凹夹g(shù)】
[0002]復(fù)雜系統(tǒng)對數(shù)據(jù)庫容災(zāi)的要求越來越高,大多數(shù)的系統(tǒng)只有一個數(shù)據(jù)庫,一旦在運行中出現(xiàn)數(shù)據(jù)庫誤操作或者崩潰的問題,會影響整個系統(tǒng)的運行,甚至可能造成宕機(jī),即所謂的單點故障。
[0003]現(xiàn)有技術(shù)中當(dāng)系統(tǒng)中的數(shù)據(jù)庫出現(xiàn)故障時,與數(shù)據(jù)庫相關(guān)的服務(wù)就會停止運行, 對數(shù)據(jù)庫進(jìn)行維護(hù),數(shù)據(jù)庫恢復(fù)正常后,相關(guān)的服務(wù)才能正常運行。
[0004]通過上述描述可見,現(xiàn)有的數(shù)據(jù)庫的可靠性較低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供了一種數(shù)據(jù)庫的系統(tǒng)、一種處理數(shù)據(jù)庫故障的方法及裝置,能夠提高數(shù)據(jù)庫的可靠性。
[0006]第一方面,本發(fā)明實施例提供了一種處理數(shù)據(jù)庫故障的方法,包括:
[0007]S1:預(yù)先為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫;
[0008]S2:預(yù)先將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中;
[0009]S3:實時獲取所述主數(shù)據(jù)庫的每個操作;
[0010]S4:在每個所述從數(shù)據(jù)庫上執(zhí)行與所述主數(shù)據(jù)庫的操作相同的操作;
[0011]S5:實時檢測所述主數(shù)據(jù)庫是否發(fā)生故障,如果是,則利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫。
[0012]進(jìn)一步地,在所述S2之前,還包括:[〇〇13] 在所述主數(shù)據(jù)庫中創(chuàng)建復(fù)制賬戶,授予所述復(fù)制賬戶REPLICAT1N SLAVE權(quán)限;
[0014]利用所述復(fù)制賬戶連接所述主數(shù)據(jù)庫;
[0015]所述S2,包括:[〇〇16]利用所述復(fù)制賬戶的REPLICAT1N SLAVE權(quán)限,將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中。
[0017]進(jìn)一步地,在所述S3之前,還包括:開啟所述主數(shù)據(jù)庫的二進(jìn)制日志;
[0018]還包括:實時在所述二進(jìn)制日志中記錄所述主數(shù)據(jù)庫的每個操作;
[0019]所述S3,包括:
[0020]實時從所述二進(jìn)制日志中獲取所述主數(shù)據(jù)庫的每個操作。
[0021]進(jìn)一步地,所述利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫,包括:
[0022]將外部對所述主數(shù)據(jù)庫的操作轉(zhuǎn)換為對用于代替所述主數(shù)據(jù)庫的從數(shù)據(jù)庫的操作。
[0023]第二方面,本發(fā)明實施例提供了一種處理數(shù)據(jù)庫故障的裝置,包括:
[0024]設(shè)置單元,用于為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫;
[0025]復(fù)制單元,用于將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中;
[0026]獲取單元,用于實時獲取所述主數(shù)據(jù)庫的每個操作;
[0027]執(zhí)行單元,用于在每個所述從數(shù)據(jù)庫上執(zhí)行與所述主數(shù)據(jù)庫相同的操作;
[0028]檢測單元,用于實時檢測所述主數(shù)據(jù)庫是否發(fā)生故障,當(dāng)檢測到所述主數(shù)據(jù)庫發(fā)生故障,利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫。
[0029]進(jìn)一步地,還包括:創(chuàng)建單元,用于在所述主數(shù)據(jù)庫中創(chuàng)建復(fù)制賬戶,授予所述復(fù)制賬戶REPLICAT1N SLAVE權(quán)限;
[0030]連接單元,用于利用所述復(fù)制賬戶連接所述主數(shù)據(jù)庫;
[0031]所述復(fù)制單元,用于利用所述復(fù)制賬戶的REPLICAT1N SLAVE權(quán)限,將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中。
[0032]進(jìn)一步地,還包括:開啟單元,用于開啟所述主數(shù)據(jù)庫的二進(jìn)制日志;
[0033]還包括:記錄單元,用于實時在所述二進(jìn)制日志中記錄所述主數(shù)據(jù)庫的每個操作;
[0034]所述獲取單元,用于實時從所述二進(jìn)制日志中獲取所述主數(shù)據(jù)庫的每個操作。
[0035]進(jìn)一步地,所述檢測單元在執(zhí)行所述利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫時,用于將外部對所述主數(shù)據(jù)庫的操作轉(zhuǎn)換為對用于代替所述主數(shù)據(jù)庫的從數(shù)據(jù)庫的操作。[〇〇36]第三方面,本發(fā)明實施例提供了一種數(shù)據(jù)庫的系統(tǒng),包括:[〇〇37]主數(shù)據(jù)庫、至少一個從數(shù)據(jù)庫、如第二方面中任一所述的處理數(shù)據(jù)庫故障的裝置。
[0038]進(jìn)一步地,所述主數(shù)據(jù)庫與所述至少一個從數(shù)據(jù)庫部署在不同的服務(wù)器上。
[0039]在本發(fā)明實施例中,為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫,將主數(shù)據(jù)庫中的原始數(shù)據(jù)復(fù)制到每個從數(shù)據(jù)庫中,使得每個從數(shù)據(jù)庫中保存有主數(shù)據(jù)庫的原始數(shù)據(jù),在每個從數(shù)據(jù)庫上執(zhí)行與主數(shù)據(jù)庫的操作相同的操作,使得每個從數(shù)據(jù)庫與主數(shù)據(jù)庫同步,實現(xiàn)從數(shù)據(jù)庫對主數(shù)據(jù)庫的備份,當(dāng)檢測主數(shù)據(jù)庫發(fā)送故障時,利用任一從數(shù)據(jù)庫代替主數(shù)據(jù)庫,夕卜部需要操作主數(shù)據(jù)庫的數(shù)據(jù)時,通過操作從數(shù)據(jù)庫的數(shù)據(jù)也可以實現(xiàn),因此,主數(shù)據(jù)庫發(fā)生故障也不會影響為外部對主數(shù)據(jù)庫中數(shù)據(jù)的操作,提高了數(shù)據(jù)庫的可靠性?!靖綀D說明】
[0040]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0041]圖1是本發(fā)明一實施例提供的一種處理數(shù)據(jù)庫故障的方法的流程圖;[〇〇42]圖2是本發(fā)明一實施例提供的另一種處理數(shù)據(jù)庫故障的方法的流程圖;[〇〇43]圖3是本發(fā)明一實施例提供的一種處理數(shù)據(jù)庫故障的裝置的示意圖;
[0044]圖4是本發(fā)明一實施例提供的另一種處理數(shù)據(jù)庫故障的裝置的示意圖;
[0045]圖5是本發(fā)明一實施例提供的一種數(shù)據(jù)庫的系統(tǒng)的示意圖?!揪唧w實施方式】
[0046]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0047]如圖1所示,本發(fā)明實施例提供了一種處理數(shù)據(jù)庫故障的方法,該方法可以包括以下步驟:
[0048]S1:預(yù)先為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫;
[0049]S2:預(yù)先將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中;
[0050]S3:實時獲取所述主數(shù)據(jù)庫的每個操作;[〇〇51]S4:在每個所述從數(shù)據(jù)庫上執(zhí)行與所述主數(shù)據(jù)庫的操作相同的操作;[〇〇52]S5:實時檢測所述主數(shù)據(jù)庫是否發(fā)生故障,如果是,則利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫。
[0053]在本發(fā)明實施例中,為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫,將主數(shù)據(jù)庫中的原始數(shù)據(jù)復(fù)制到每個從數(shù)據(jù)庫中,使得每個從數(shù)據(jù)庫中保存有主數(shù)據(jù)庫的原始數(shù)據(jù),在每個從數(shù)據(jù)庫上執(zhí)行與主數(shù)據(jù)庫的操作相同的操作,使得每個從數(shù)據(jù)庫與主數(shù)據(jù)庫同步,實現(xiàn)從數(shù)據(jù)庫對主數(shù)據(jù)庫的備份,當(dāng)檢測主數(shù)據(jù)庫發(fā)送故障時,利用任一從數(shù)據(jù)庫代替主數(shù)據(jù)庫,夕卜部需要操作主數(shù)據(jù)庫的數(shù)據(jù)時,通過操作從數(shù)據(jù)庫的數(shù)據(jù)也可以實現(xiàn),因此,主數(shù)據(jù)庫發(fā)生故障也不會影響為外部對主數(shù)據(jù)庫中數(shù)據(jù)的操作,提高了數(shù)據(jù)庫的可靠性。
[0054]在本發(fā)明一實施例中,在所述S2之前,還包括:[〇〇55] 在所述主數(shù)據(jù)庫中創(chuàng)建復(fù)制賬戶,授予所述復(fù)制賬戶REPLICAT1N SLAVE權(quán)限;
[0056]利用所述復(fù)制賬戶連接所述主數(shù)據(jù)庫;[〇〇57] 所述S2,包括:[〇〇58]利用所述復(fù)制賬戶的REPLICAT1N SLAVE權(quán)限,將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中。
[0059]在本實施例中,由于對主數(shù)據(jù)庫的操作需要有相應(yīng)的權(quán)限,為了復(fù)制主數(shù)據(jù)庫中的原始數(shù)據(jù),通過創(chuàng)建復(fù)制賬戶來提供相應(yīng)的REPLICAT1N SLAVE權(quán)限。當(dāng)通過復(fù)制賬戶連接主數(shù)據(jù)庫時,即可以復(fù)制主數(shù)據(jù)庫中的原始數(shù)據(jù)。具體的,任一從數(shù)據(jù)庫可以利用該復(fù)制賬號和該復(fù)制賬戶的密碼鏈接到主數(shù)據(jù)庫。
[0060]另外,為了避免使得主數(shù)據(jù)庫中的原始數(shù)據(jù)能夠全部復(fù)制到每個從數(shù)據(jù)庫中,在步驟S2之前,還包括:禁止對主數(shù)據(jù)庫和每個從數(shù)據(jù)庫進(jìn)行寫操作。這樣可以保證主數(shù)據(jù)庫和每個從數(shù)據(jù)庫不會寫入新的數(shù)據(jù),保證了主數(shù)據(jù)庫中的原始數(shù)據(jù)能夠全部復(fù)制到每個從數(shù)據(jù)庫中,使得主數(shù)據(jù)庫和每個從數(shù)據(jù)庫中的數(shù)據(jù)相同。[0061 ]在本發(fā)明一實施例中,在所述S3之前,還包括:[〇〇62]開啟所述主數(shù)據(jù)庫的二進(jìn)制日志;
[0063]還包括:實時在所述二進(jìn)制日志中記錄所述主數(shù)據(jù)庫的每個操作;[〇〇64] 所述S3,包括:
[0065]實時從所述二進(jìn)制日志中獲取所述主數(shù)據(jù)庫的每個操作。
[0066]在本實施例中,開啟所述主數(shù)據(jù)庫的二進(jìn)制日志可以通過對主數(shù)據(jù)庫進(jìn)行配置來實現(xiàn),為了使配置生效,一般需要重啟主數(shù)據(jù)庫。在主數(shù)據(jù)庫的二進(jìn)制日志中記錄主數(shù)據(jù)庫的每個操作,對操作的記錄可以通過事件的形式來記錄。具體的,在二進(jìn)制日志中記錄主數(shù)據(jù)庫的所有的DDL(Data Definit1n Language,數(shù)據(jù)定義語言)和DML(Data Manipulat1n Language,數(shù)據(jù)操縱語言)。
[0067]另外,為了使得主數(shù)據(jù)庫與任一從數(shù)據(jù)庫連接,還可以對主數(shù)據(jù)庫進(jìn)行配置,具體的,配置從數(shù)據(jù)庫的標(biāo)識,例如:從數(shù)據(jù)庫的地址。針對從數(shù)據(jù)庫也進(jìn)行相似的配置,具體的,配置主數(shù)據(jù)庫的標(biāo)識,例如:主數(shù)據(jù)庫的地址。
[0068]在實現(xiàn)實時從所述二進(jìn)制日志中獲取所述主數(shù)據(jù)庫的每個操作時,可以通過設(shè)置獲取線程自動獲取,具體的,通過獲取線程輪詢二進(jìn)制日志,獲取二進(jìn)制日志中的每個操作。[〇〇69]在執(zhí)行S4時,可以設(shè)置執(zhí)行線程,通過執(zhí)行線程執(zhí)行獲取到的每個操作。這樣保證了主數(shù)據(jù)庫和從數(shù)據(jù)庫中數(shù)據(jù)的一致。
[0070]在本發(fā)明一實施例中,所述利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫,包括:
[0071]將外部對所述主數(shù)據(jù)庫的操作轉(zhuǎn)換為對用于代替所述主數(shù)據(jù)庫的從數(shù)據(jù)庫的操作。
[0072]在本實施例中,將主數(shù)據(jù)庫切換到從數(shù)據(jù)庫,由從數(shù)據(jù)庫實現(xiàn)主數(shù)據(jù)庫的所有功能。具體的,可以將外部訪問的數(shù)據(jù)庫的地址由主數(shù)據(jù)庫的地址修改為用于代替所述主數(shù)據(jù)庫的從數(shù)據(jù)庫的地址。舉例來說,外部的軟件A需要對主數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行操作,軟件A需要根據(jù)已經(jīng)配置的主數(shù)據(jù)庫的地址來訪問主數(shù)據(jù)庫,由于主數(shù)據(jù)庫發(fā)生故障,無法實現(xiàn)訪問主數(shù)據(jù)庫,將主數(shù)據(jù)庫與從數(shù)據(jù)庫進(jìn)行切換,將軟件A的配置中數(shù)據(jù)庫的地址修改為從數(shù)據(jù)庫的地址,對于軟件A來說,其操作并沒有發(fā)生變化,仍然根據(jù)配置的數(shù)據(jù)庫的地址進(jìn)行訪問。[〇〇73]以MYSQL為例,如圖2所示,本發(fā)明實施例提供了一種處理數(shù)據(jù)庫故障的方法,在本發(fā)明實施例中,主數(shù)據(jù)庫和從數(shù)據(jù)庫都為MYSQL,該方法可以包括以下步驟:[〇〇74]步驟201:預(yù)先為主數(shù)據(jù)庫設(shè)置從數(shù)據(jù)庫。
[0075]主數(shù)據(jù)庫和從數(shù)據(jù)庫部署在不同的服務(wù)器,這樣主數(shù)據(jù)庫由于所在服務(wù)器故障而無法正常工作時,從數(shù)據(jù)庫也可以實現(xiàn)對主數(shù)據(jù)庫的備份。避免當(dāng)主數(shù)據(jù)庫與從數(shù)據(jù)庫都在同一個服務(wù)器上時,由于所在的服務(wù)器故障而導(dǎo)致主數(shù)據(jù)庫與從數(shù)據(jù)庫都無法正常工作。這樣,即使主數(shù)據(jù)庫所在的服務(wù)器發(fā)生宕機(jī)等故障時,可以成功的切換的從數(shù)據(jù)庫,使從數(shù)據(jù)庫代替主數(shù)據(jù)庫。[〇〇76]另外,為了保證主數(shù)據(jù)庫與從數(shù)據(jù)庫之間的數(shù)據(jù)復(fù)制成功,并為了保證從數(shù)據(jù)庫能夠完全替代主服務(wù)器,需要確保主數(shù)據(jù)庫與從數(shù)據(jù)庫的版本兼容,具體的,保證從數(shù)據(jù)庫的版本與主數(shù)據(jù)庫版本相同或者從數(shù)據(jù)庫的版本比主數(shù)據(jù)庫版本更高。[〇〇77] 步驟202:在主數(shù)據(jù)庫中創(chuàng)建復(fù)制賬戶,授予復(fù)制賬戶REPLICAT1N SLAVE權(quán)限。 [〇〇78]具體的,復(fù)制賬戶具有REPLICAT1N SLAVE權(quán)限后,即可復(fù)制主數(shù)據(jù)庫中的原始數(shù)據(jù)。[〇〇79]步驟203:利用復(fù)制賬戶連接主數(shù)據(jù)庫。[〇〇8〇]具體的,可以利用復(fù)制賬戶將從數(shù)據(jù)庫與主數(shù)據(jù)庫連接。[〇〇811 步驟204:利用復(fù)制賬戶的REPLICAT1N SLAVE權(quán)限,將主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到從數(shù)據(jù)庫中。
[0082]該過程可以由從數(shù)據(jù)庫來完成。[〇〇83]步驟205:開啟主數(shù)據(jù)庫的二進(jìn)制日志。
[0084]二進(jìn)制日志中通過二進(jìn)制來記錄相應(yīng)的信息。[〇〇85]步驟206:實時在二進(jìn)制日志中記錄主數(shù)據(jù)庫的每個操作。[〇〇86]步驟207:實時從二進(jìn)制日志中獲取主數(shù)據(jù)庫的每個操作。
[0087]該步驟可以由從數(shù)據(jù)庫來實現(xiàn)。具體地,實時輪詢二進(jìn)制日志,獲取二進(jìn)制日志中的記錄。[〇〇88]步驟208:在從數(shù)據(jù)庫上執(zhí)行與主數(shù)據(jù)庫的操作相同的操作。
[0089]通過該步驟可以使得主數(shù)據(jù)庫與從數(shù)據(jù)庫的數(shù)據(jù)保持同步,使得從數(shù)據(jù)庫稱為主數(shù)據(jù)庫的備份。
[0090]步驟209:實時檢測主數(shù)據(jù)庫是否發(fā)生故障,如果是,則利用從數(shù)據(jù)庫代替主數(shù)據(jù)庫。
[0091]舉例來說,應(yīng)用A需要讀取主數(shù)據(jù)庫中的數(shù)據(jù)A,主數(shù)據(jù)庫發(fā)生故障后,應(yīng)用A直接從從數(shù)據(jù)庫中讀取數(shù)據(jù)A。對于應(yīng)用A來說,可以將應(yīng)用A的數(shù)據(jù)庫的地址由主數(shù)據(jù)庫的地址修改為從數(shù)據(jù)庫的地址來實現(xiàn)從數(shù)據(jù)庫代替主數(shù)據(jù)庫。
[0092]具體的,外部需要操作主數(shù)據(jù)庫的應(yīng)用都切換為對從數(shù)據(jù)庫進(jìn)行操作。該步驟可以通過中間件來實現(xiàn),該中間件將對主數(shù)據(jù)庫的操作轉(zhuǎn)換為對從數(shù)據(jù)庫的操作。
[0093]在本發(fā)明實施例中,可以利用MYSQL的asynchronous replicat1n功能,將主數(shù)據(jù)庫的數(shù)據(jù)復(fù)制到從數(shù)據(jù)庫中。本發(fā)明實施例中對數(shù)據(jù)庫的操作可以包括:讀取、寫入、刪除、 修改、查詢等。
[0094]本發(fā)明實施例可以有效的解決單點故障的問題。當(dāng)主數(shù)據(jù)庫出現(xiàn)問題時,可以迅速切換到從數(shù)據(jù)庫,保證系統(tǒng)正常運行,簡單可靠。
[0095]如圖3、圖4所示,本發(fā)明實施例提供了一種處理數(shù)據(jù)庫故障的裝置。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。從硬件層面而言,如圖3所示,為本發(fā)明實施例提供的一種處理數(shù)據(jù)庫故障的裝置所在設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖3所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲器之外,實施例中裝置所在的設(shè)備通常還可以包括其他硬件,如負(fù)責(zé)處理報文的轉(zhuǎn)發(fā)芯片等等。以軟件實現(xiàn)為例,如圖4所示,作為一個邏輯意義上的裝置,是通過其所在設(shè)備的CPU將非易失性存儲器中對應(yīng)的計算機(jī)程序指令讀取到內(nèi)存中運行形成的。本實施例提供的一種處理數(shù)據(jù)庫故障的裝置,包括: [〇〇96]設(shè)置單元401,用于為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫;
[0097]復(fù)制單元402,用于將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中;[〇〇98]獲取單元403,用于實時獲取所述主數(shù)據(jù)庫的每個操作;
[0099]執(zhí)行單元404,用于在每個所述從數(shù)據(jù)庫上執(zhí)行與所述主數(shù)據(jù)庫相同的操作;
[0100]檢測單元405,用于實時檢測所述主數(shù)據(jù)庫是否發(fā)生故障,當(dāng)檢測到所述主數(shù)據(jù)庫發(fā)生故障,利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫。
[0101]在本發(fā)明一實施例中,還包括:創(chuàng)建單元,用于在所述主數(shù)據(jù)庫中創(chuàng)建復(fù)制賬戶, 授予所述復(fù)制賬戶REPLICAT1N SLAVE權(quán)限;
[0102]連接單元,用于利用所述復(fù)制賬戶連接所述主數(shù)據(jù)庫;
[0103]所述復(fù)制單元,用于利用所述復(fù)制賬戶的REPLICAT1N SLAVE權(quán)限,將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中。
[0104]在本發(fā)明一實施例中,還包括:開啟單元,用于開啟所述主數(shù)據(jù)庫的二進(jìn)制日志;
[0105]還包括:記錄單元,用于實時在所述二進(jìn)制日志中記錄所述主數(shù)據(jù)庫的每個操作;
[0106]所述獲取單元,用于實時從所述二進(jìn)制日志中獲取所述主數(shù)據(jù)庫的每個操作。
[0107]在本發(fā)明一實施例中,所述檢測單元在執(zhí)行所述利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫時,用于將外部對所述主數(shù)據(jù)庫的操作轉(zhuǎn)換為對用于代替所述主數(shù)據(jù)庫的從數(shù)據(jù)庫的操作。
[0108]本發(fā)明實施例提供了一種數(shù)據(jù)庫的系統(tǒng),包括:
[0109]主數(shù)據(jù)庫、至少一個從數(shù)據(jù)庫、本發(fā)明實施例中任一的處理數(shù)據(jù)庫故障的裝置。
[0110]如圖5所示,本發(fā)明實施例提供的一種數(shù)據(jù)庫的系統(tǒng),包括:主數(shù)據(jù)庫501、從數(shù)據(jù)庫502、本發(fā)明實施例中任一的處理數(shù)據(jù)庫故障的裝置503。
[0112]在本發(fā)明一實施例中,所述主數(shù)據(jù)庫與所述至少一個從數(shù)據(jù)庫部署在不同的服務(wù)器上。
[0113]上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
[0114]本發(fā)明各個實施例至少具有如下有益效果:
[0115]1、在本發(fā)明實施例中,為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫,將主數(shù)據(jù)庫中的原始數(shù)據(jù)復(fù)制到每個從數(shù)據(jù)庫中,使得每個從數(shù)據(jù)庫中保存有主數(shù)據(jù)庫的原始數(shù)據(jù),在每個從數(shù)據(jù)庫上執(zhí)行與主數(shù)據(jù)庫的操作相同的操作,使得每個從數(shù)據(jù)庫與主數(shù)據(jù)庫同步,實現(xiàn)從數(shù)據(jù)庫對主數(shù)據(jù)庫的備份,當(dāng)檢測主數(shù)據(jù)庫發(fā)送故障時,利用任一從數(shù)據(jù)庫代替主數(shù)據(jù)庫, 外部需要操作主數(shù)據(jù)庫的數(shù)據(jù)時,通過操作從數(shù)據(jù)庫的數(shù)據(jù)也可以實現(xiàn),因此,主數(shù)據(jù)庫發(fā)生故障也不會影響為外部對主數(shù)據(jù)庫中數(shù)據(jù)的操作,提高了數(shù)據(jù)庫的可靠性。
[0116]2、本發(fā)明實施例可以有效的解決單點故障的問題,當(dāng)主數(shù)據(jù)庫出現(xiàn)問題時,可以迅速切換到從數(shù)據(jù)庫,保證系統(tǒng)正運行,簡單可靠。[〇117]需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素, 而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個〃.....”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
[0118]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲在計算機(jī)可讀取的存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)中。
[0119]最后需要說明的是:以上所述僅為本發(fā)明的較佳實施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、 等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【主權(quán)項】
1.一種處理數(shù)據(jù)庫故障的方法,其特征在于,包括:S1:預(yù)先為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫;S2:預(yù)先將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中;S3:實時獲取所述主數(shù)據(jù)庫的每個操作;S4:在每個所述從數(shù)據(jù)庫上執(zhí)行與所述主數(shù)據(jù)庫的操作相同的操作;S5:實時檢測所述主數(shù)據(jù)庫是否發(fā)生故障,如果是,則利用任一所述從數(shù)據(jù)庫代替所述 主數(shù)據(jù)庫。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述S2之前,還包括:在所述主數(shù)據(jù)庫中創(chuàng)建復(fù)制賬戶,授予所述復(fù)制賬戶REPLICAT1N SLAVE權(quán)限;利用所述復(fù)制賬戶連接所述主數(shù)據(jù)庫;所述S2,包括:利用所述復(fù)制賬戶的REPLI CAT I ON SLAVE權(quán)限,將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每 個所述從數(shù)據(jù)庫中。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述S3之前,還包括:開啟所述主數(shù)據(jù)庫的二進(jìn)制日志;還包括:實時在所述二進(jìn)制日志中記錄所述主數(shù)據(jù)庫的每個操作;所述S3,包括:實時從所述二進(jìn)制日志中獲取所述主數(shù)據(jù)庫的每個操作。4.根據(jù)權(quán)利要求1-3中任一所述的方法,其特征在于,所述利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫,包括:將外部對所述主數(shù)據(jù)庫的操作轉(zhuǎn)換為對用于代替所述主數(shù)據(jù)庫的從數(shù)據(jù)庫的操作。5.—種處理數(shù)據(jù)庫故障的裝置,其特征在于,包括:設(shè)置單元,用于為主數(shù)據(jù)庫設(shè)置至少一個從數(shù)據(jù)庫;復(fù)制單元,用于將所述主數(shù)據(jù)庫中原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中;獲取單元,用于實時獲取所述主數(shù)據(jù)庫的每個操作;執(zhí)行單元,用于在每個所述從數(shù)據(jù)庫上執(zhí)行與所述主數(shù)據(jù)庫相同的操作;檢測單元,用于實時檢測所述主數(shù)據(jù)庫是否發(fā)生故障,當(dāng)檢測到所述主數(shù)據(jù)庫發(fā)生故 障,利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫。6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,還包括:創(chuàng)建單元,用于在所述主數(shù)據(jù)庫中創(chuàng)建復(fù)制賬戶,授予所述復(fù)制賬戶 REPLICAT1N SLAVE權(quán)限;連接單元,用于利用所述復(fù)制賬戶連接所述主數(shù)據(jù)庫;所述復(fù)制單元,用于利用所述復(fù)制賬戶的REPLICAT1N SLAVE權(quán)限,將所述主數(shù)據(jù)庫中 原始數(shù)據(jù)復(fù)制到每個所述從數(shù)據(jù)庫中。7.根據(jù)權(quán)利要求5所述的裝置,其特征在于,還包括:開啟單元,用于開啟所述主數(shù)據(jù)庫的二進(jìn)制日志;還包括:記錄單元,用于實時在所述二進(jìn)制日志中記錄所述主數(shù)據(jù)庫的每個操作; 所述獲取單元,用于實時從所述二進(jìn)制日志中獲取所述主數(shù)據(jù)庫的每個操作。8.根據(jù)權(quán)利要求5-7中任一所述的裝置,其特征在于,所述檢測單元在執(zhí)行所述利用任一所述從數(shù)據(jù)庫代替所述主數(shù)據(jù)庫時,用于將外部對 所述主數(shù)據(jù)庫的操作轉(zhuǎn)換為對用于代替所述主數(shù)據(jù)庫的從數(shù)據(jù)庫的操作。9.一種數(shù)據(jù)庫的系統(tǒng),其特征在于,包括:主數(shù)據(jù)庫、至少一個從數(shù)據(jù)庫、如權(quán)利要求5-8中任一所述的處理數(shù)據(jù)庫故障的裝置。10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,包括:所述主數(shù)據(jù)庫與所述至少一個從數(shù)據(jù)庫部署在不同的服務(wù)器上。
【文檔編號】G06F17/30GK106021030SQ201610370627
【公開日】2016年10月12日
【申請日】2016年5月30日
【發(fā)明人】劉增輝
【申請人】浪潮電子信息產(chǎn)業(yè)股份有限公司