數(shù)據(jù)補(bǔ)全方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體涉及一種數(shù)據(jù)補(bǔ)全方法和裝置。
【背景技術(shù)】
[0002]在目前,關(guān)系型數(shù)據(jù)庫(kù)的應(yīng)用非常廣泛,例如MYSQL數(shù)據(jù)庫(kù)。目前,關(guān)系型數(shù)據(jù)庫(kù)集群中多采用一主多從的架構(gòu)。如圖1所示,為一MYSQL數(shù)據(jù)庫(kù)集群的架構(gòu)示意圖,其包括:主數(shù)據(jù)庫(kù)master和三個(gè)從數(shù)據(jù)庫(kù),三個(gè)從數(shù)據(jù)庫(kù)分別為:
[0003]Slave-K Slave-2 和 Slave3。
[0004]例如圖1中所示,Slave-1和Slave-2位于機(jī)房1,Slave3位于機(jī)房2。主數(shù)據(jù)庫(kù)master分別與從數(shù)據(jù)庫(kù)Slave-1、Slave-2和Slave3連接。
[0005]在現(xiàn)實(shí)對(duì)數(shù)據(jù)庫(kù)的使用中,主數(shù)據(jù)庫(kù)master有可能因?yàn)楦鞣N原因宕機(jī),為了減少數(shù)據(jù)庫(kù)對(duì)業(yè)務(wù)的影響,這時(shí)則需要選擇一個(gè)從數(shù)據(jù)庫(kù)作為新的主數(shù)據(jù)庫(kù)來(lái)代替原來(lái)的主數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)集群中要求主數(shù)據(jù)庫(kù)中需保存有當(dāng)前數(shù)據(jù)庫(kù)集群中最新的數(shù)據(jù),因此需要對(duì)新的主數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行補(bǔ)全。但是,目前并沒有有效的技術(shù)手段能在數(shù)據(jù)庫(kù)集群的主數(shù)據(jù)庫(kù)進(jìn)行切換時(shí)對(duì)新的主數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)補(bǔ)全。
【發(fā)明內(nèi)容】
[0006]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的數(shù)據(jù)補(bǔ)全方法和相應(yīng)地裝置。
[0007]依據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)補(bǔ)全方法,應(yīng)用于主從式數(shù)據(jù)庫(kù)集群中主數(shù)據(jù)庫(kù)切換,所述方法包括:
[0008]從所述數(shù)據(jù)庫(kù)集群中選擇一從數(shù)據(jù)庫(kù)以作為新的主數(shù)據(jù)庫(kù);
[0009]依次建立所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)的第一連接;
[0010]將所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)分別進(jìn)行比對(duì),以將所有其他從數(shù)據(jù)庫(kù)中的新數(shù)據(jù)同步到所述新的主數(shù)據(jù)庫(kù)中;以及
[0011]當(dāng)完成對(duì)所述所有其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)比對(duì)時(shí),結(jié)束對(duì)所述新的主數(shù)據(jù)庫(kù)的數(shù)據(jù)補(bǔ)全。
[0012]可選地,所述從所述數(shù)據(jù)庫(kù)集群中選擇一從數(shù)據(jù)庫(kù)以作為新的主數(shù)據(jù)庫(kù)的步驟進(jìn)一步包括:
[0013]在所述依次建立新的主數(shù)據(jù)庫(kù)與所有從數(shù)據(jù)庫(kù)的連接之前,獲取所述數(shù)據(jù)庫(kù)集群的所有從數(shù)據(jù)庫(kù)的列表;以及
[0014]在所述列表記錄的所述所有從數(shù)據(jù)庫(kù)中,篩選得到一符合預(yù)設(shè)條件的從數(shù)據(jù)庫(kù)作為新的主數(shù)據(jù)庫(kù)。
[0015]可選地,所述預(yù)定條件包括以下至少之一:
[0016]從數(shù)據(jù)庫(kù)狀態(tài)標(biāo)識(shí)為alive ;以及
[0017]從數(shù)據(jù)庫(kù)延遲事務(wù)數(shù)量小于預(yù)設(shè)數(shù)量。
[0018]可選地,所述第一連接為主從式連接,且所述其他從數(shù)據(jù)庫(kù)與所述新的主數(shù)據(jù)庫(kù)分別具有主、從地位。
[0019]可選地,所述將所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)分別進(jìn)行比對(duì),以將所有其他從數(shù)據(jù)庫(kù)中的新數(shù)據(jù)同步到所述新的主數(shù)據(jù)庫(kù)中的步驟進(jìn)一步包括:
[0020]在完成所述新的主數(shù)據(jù)庫(kù)與一其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)比對(duì)之后,斷開兩者之間的所述第一連接。
[0021]可選地,所述方法進(jìn)一步包括:
[0022]在結(jié)束對(duì)所述新的主數(shù)據(jù)庫(kù)的數(shù)據(jù)補(bǔ)全之后,依次建立所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)之間的第二連接;以及
[0023]將所述新的主數(shù)據(jù)庫(kù)的數(shù)據(jù)同步至所有其他從數(shù)據(jù)庫(kù)。
[0024]可選地,所述第二連接為主從式連接,且所述新的主數(shù)據(jù)庫(kù)與所述其他從數(shù)據(jù)庫(kù)分別具有主、從的地位。
[0025]可選地,所述數(shù)據(jù)庫(kù)集群為MYSQL數(shù)據(jù)庫(kù)集群。
[0026]依據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)補(bǔ)全方法,應(yīng)用于主從式數(shù)據(jù)庫(kù)集群中主數(shù)據(jù)庫(kù)切換,所述方法包括:
[0027]a)從所述數(shù)據(jù)庫(kù)集群中選擇一從數(shù)據(jù)庫(kù)以作為新的主數(shù)據(jù)庫(kù);
[0028]b)建立所述新的主數(shù)據(jù)庫(kù)與一其他從數(shù)據(jù)庫(kù)的第一連接;
[0029]c)將所述新的主數(shù)據(jù)庫(kù)與所述其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行比對(duì),以將所述其他從數(shù)據(jù)庫(kù)中的新數(shù)據(jù)同步到所述新的主數(shù)據(jù)庫(kù)中;
[0030]d)重復(fù)步驟b)和C),直至所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)都完成數(shù)據(jù)比對(duì);以及
[0031]e)建立所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)之間的第二連接,以將所述新的主數(shù)據(jù)庫(kù)的數(shù)據(jù)同步至所有其他從數(shù)據(jù)庫(kù)。
[0032]可選地,所述將所述新的主數(shù)據(jù)庫(kù)與所述其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行比對(duì),以將所述其他從數(shù)據(jù)庫(kù)中的新數(shù)據(jù)同步到所述新的主數(shù)據(jù)庫(kù)中的步驟進(jìn)一步包括:
[0033]f)在完成所述新的主數(shù)據(jù)庫(kù)與所述其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)比對(duì)之后,斷開兩者之間的所述第一連接。
[0034]可選地,所述第一連接為主從式連接,且所述其他從數(shù)據(jù)庫(kù)與所述新的主數(shù)據(jù)庫(kù)分別具有主、從地位。
[0035]可選地,所述第二連接為主從式連接,且所述新的主數(shù)據(jù)庫(kù)與所述其他從數(shù)據(jù)庫(kù)分別具有主、從的地位。
[0036]依據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)補(bǔ)全裝置,應(yīng)用于主從式數(shù)據(jù)庫(kù)集群中主數(shù)據(jù)庫(kù)切換,所述裝置包括:
[0037]第一主庫(kù)選取模塊,適于從所述數(shù)據(jù)庫(kù)集群中選擇一從數(shù)據(jù)庫(kù)以作為新的主數(shù)據(jù)庫(kù);
[0038]第一連接建立模塊,適于依次建立所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)的第一連接;
[0039]第一同步模塊,適于將所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)分別進(jìn)行比對(duì),以將所有其他從數(shù)據(jù)庫(kù)中的新數(shù)據(jù)同步到所述新的主數(shù)據(jù)庫(kù)中;
[0040]第一補(bǔ)全確認(rèn)模塊,適于當(dāng)完成對(duì)所述所有其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)比對(duì)時(shí),結(jié)束對(duì)所述新的主數(shù)據(jù)庫(kù)的數(shù)據(jù)補(bǔ)全。
[0041]可選地,所述第一主庫(kù)選取模塊進(jìn)一步包括:
[0042]列表獲取單元,適于在所述依次建立新的主數(shù)據(jù)庫(kù)與所有從數(shù)據(jù)庫(kù)的連接之前,獲取所述數(shù)據(jù)庫(kù)集群的所有從數(shù)據(jù)庫(kù)的列表;
[0043]主庫(kù)篩選單元,適于在所述列表記錄的所述所有從數(shù)據(jù)庫(kù)中,篩選得到一符合預(yù)設(shè)條件的從數(shù)據(jù)庫(kù)作為新的主數(shù)據(jù)庫(kù)。
[0044]可選地,所述預(yù)定條件包括以下至少之一:
[0045]從數(shù)據(jù)庫(kù)狀態(tài)標(biāo)識(shí)為alive ;以及
[0046]從數(shù)據(jù)庫(kù)延遲事務(wù)數(shù)量小于預(yù)設(shè)數(shù)量。
[0047]可選地,所述第一連接為主從式連接,且所述其他從數(shù)據(jù)庫(kù)與所述新的主數(shù)據(jù)庫(kù)分別具有主、從地位。
[0048]可選地,所述第一同步模塊進(jìn)一步適于:
[0049]在完成所述新的主數(shù)據(jù)庫(kù)與一其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)比對(duì)之后,斷開兩者之間的所述第一連接。
[0050]可選地,所述裝置進(jìn)一步包括:
[0051]第二連接建立模塊,適于在結(jié)束對(duì)所述新的主數(shù)據(jù)庫(kù)的數(shù)據(jù)補(bǔ)全之后,依次建立所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)之間的第二連接;
[0052]第二同步模塊,適于將所述新的主數(shù)據(jù)庫(kù)的數(shù)據(jù)同步至所有其他從數(shù)據(jù)庫(kù)。
[0053]可選地,所述第二連接為主從式連接,且所述新的主數(shù)據(jù)庫(kù)與所述其他從數(shù)據(jù)庫(kù)分別具有主、從的地位。
[0054]可選地,所述數(shù)據(jù)庫(kù)集群為MYSQL數(shù)據(jù)庫(kù)集群。
[0055]依據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)補(bǔ)全裝置,應(yīng)用于主從式數(shù)據(jù)庫(kù)集群中主數(shù)據(jù)庫(kù)切換,所述裝置包括:
[0056]第二主庫(kù)選取模塊,適于從所述數(shù)據(jù)庫(kù)集群中選擇一從數(shù)據(jù)庫(kù)以作為新的主數(shù)據(jù)庫(kù);
[0057]第三連接建立模塊,適于建立所述新的主數(shù)據(jù)庫(kù)與一其他從數(shù)據(jù)庫(kù)的第一連接;
[0058]第三同步模塊,適于將所述新的主數(shù)據(jù)庫(kù)與所述其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行比對(duì),以將所述其他從數(shù)據(jù)庫(kù)中的新數(shù)據(jù)同步到所述新的主數(shù)據(jù)庫(kù)中;
[0059]第二補(bǔ)全確認(rèn)模塊,適于重復(fù)第三連接建立模塊與所述第三同步模塊執(zhí)行的操作,直至所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)都完成數(shù)據(jù)比對(duì);
[0060]第四連接建立模塊,適于建立所述新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)之間的第二連接,以將所述新的主數(shù)據(jù)庫(kù)的數(shù)據(jù)同步至所有其他從數(shù)據(jù)庫(kù)。
[0061]可選地,所述第三同步模塊進(jìn)一步適于:
[0062]在完成所述新的主數(shù)據(jù)庫(kù)與所述其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)比對(duì)之后,斷開兩者之間的所述第一連接。
[0063]可選地,所述第一連接為主從式連接,且所述其他從數(shù)據(jù)庫(kù)與所述新的主數(shù)據(jù)庫(kù)分別具有主、從地位。
[0064]可選地,所述第二連接為主從式連接,且所述新的主數(shù)據(jù)庫(kù)與所述其他從數(shù)據(jù)庫(kù)分別具有主、從的地位。
[0065]本發(fā)明實(shí)施例提供了一種數(shù)據(jù)補(bǔ)全方法和裝置,在主從式的數(shù)據(jù)庫(kù)集群進(jìn)行主數(shù)據(jù)庫(kù)切換的過(guò)程中,從數(shù)據(jù)庫(kù)集群中選擇一從數(shù)據(jù)庫(kù)以作為新的主數(shù)據(jù)庫(kù),依次建立新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)的第一連接,將新的主數(shù)據(jù)庫(kù)與所有其他從數(shù)據(jù)庫(kù)的數(shù)據(jù)分別進(jìn)行比對(duì),以將所有其他從數(shù)據(jù)庫(kù)中的新數(shù)據(jù)同步到所述新的主數(shù)據(jù)庫(kù)中,以完成對(duì)新的主數(shù)據(jù)庫(kù)的數(shù)據(jù)補(bǔ)全,使新的主數(shù)據(jù)庫(kù)擁有數(shù)據(jù)庫(kù)集群中最新的數(shù)據(jù),保證主數(shù)據(jù)庫(kù)的順利切換,從而不會(huì)影響數(shù)據(jù)庫(kù)的業(yè)務(wù)的正常進(jìn)行。
[0066]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
[0067]根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
【附圖說(shuō)明】
[0068]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0069]圖1是現(xiàn)有的一種MYSQL數(shù)據(jù)庫(kù)集群的架構(gòu)示意圖;
[0070]圖2是本發(fā)明一個(gè)實(shí)施例提供的一種數(shù)據(jù)補(bǔ)全方法流程示意圖;
[0071]圖3是本發(fā)明一個(gè)實(shí)施例提供的一種MYSQL數(shù)據(jù)庫(kù)集群中的主數(shù)據(jù)庫(kù)切換時(shí)的數(shù)據(jù)補(bǔ)全