一種元數(shù)據(jù)的更新方法及裝置制造方法
【專(zhuān)利摘要】本申請(qǐng)公開(kāi)了一種元數(shù)據(jù)的更新方法及裝置,用以解決現(xiàn)有技術(shù)中更新元數(shù)據(jù)的效率較低、準(zhǔn)確性較低的問(wèn)題。該方法更新裝置讀取當(dāng)前保存的數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí),并訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及備庫(kù)信息,并記錄在更新元數(shù)據(jù)中,將該更新元數(shù)據(jù)重新作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。通過(guò)上述方法,更新裝置可根據(jù)當(dāng)前保存的數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)該數(shù)據(jù)庫(kù)集群中的各數(shù)據(jù)庫(kù),以獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及當(dāng)前的備庫(kù)信息,并據(jù)此對(duì)元數(shù)據(jù)進(jìn)行更新,而無(wú)需人為對(duì)元數(shù)據(jù)進(jìn)行更新,因此提高了元數(shù)據(jù)更新的效率和準(zhǔn)確性。
【專(zhuān)利說(shuō)明】一種元數(shù)據(jù)的更新方法及裝置
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種元數(shù)據(jù)的更新方法及裝置。
【背景技術(shù)】
[0002]數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)是一種用于描述該數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)果的數(shù)據(jù),具體可以描述該數(shù)據(jù)庫(kù)集群中包含的各數(shù)據(jù)庫(kù)之間的主備關(guān)系和級(jí)聯(lián)關(guān)系。
[0003]目前,由于數(shù)據(jù)庫(kù)集群在應(yīng)用的過(guò)程中經(jīng)常會(huì)進(jìn)行主備庫(kù)切換、新增數(shù)據(jù)庫(kù)、硬件升級(jí)等操作,這就會(huì)改變數(shù)據(jù)庫(kù)集群原有的拓?fù)浣Y(jié)構(gòu),因此,在對(duì)數(shù)據(jù)庫(kù)集群進(jìn)行維護(hù)的過(guò)程中,就需要對(duì)數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新,以便于后續(xù)對(duì)數(shù)據(jù)庫(kù)集群的管理。
[0004]在現(xiàn)有技術(shù)中,通常是采用人工的方式確定數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)構(gòu)所發(fā)生的變化,并據(jù)此對(duì)數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新的。顯然,這種方法更新元數(shù)據(jù)的效率較低,而且也會(huì)由于人為誤差的引入而降低更新的元數(shù)據(jù)的準(zhǔn)確性,尤其是在對(duì)大規(guī)模數(shù)據(jù)庫(kù)集群(包含幾百個(gè)甚至上千個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)集群)的元數(shù)據(jù)進(jìn)行更新時(shí),人工更新元數(shù)據(jù)往往需要消耗大量的人力物力,而且更新的元數(shù)據(jù)的準(zhǔn)確性也較低。
【發(fā)明內(nèi)容】
[0005]本申請(qǐng)實(shí)施例提供一種元數(shù)據(jù)的更新方法及裝置,用以解決現(xiàn)有技術(shù)中更新元數(shù)據(jù)的效率較低、準(zhǔn)確性較低的問(wèn)題。
[0006]本申請(qǐng)實(shí)施例提供的一種元數(shù)據(jù)的更新方法,包括:
[0007]更新裝置針對(duì)數(shù)據(jù)庫(kù)集群,讀取當(dāng)前保存的所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的所述元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí);并
[0008]訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及各數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中;以及
[0009]將所述更新元數(shù)據(jù)重新作為所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
[0010]本申請(qǐng)實(shí)施例提供的一種元數(shù)據(jù)的更新裝置,包括:
[0011]讀取模塊,用于針對(duì)數(shù)據(jù)庫(kù)集群,讀取當(dāng)前保存的所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的所述元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí);
[0012]收集模塊,用于訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及各數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中,將所述更新元數(shù)據(jù)重新作為所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
[0013]本申請(qǐng)實(shí)施例提供一種元數(shù)據(jù)的更新方法及裝置,該方法更新裝置讀取當(dāng)前保存的數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí),并訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及各數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中,將該更新元數(shù)據(jù)重新作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。通過(guò)上述方法,更新裝置可根據(jù)當(dāng)前保存的數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)該數(shù)據(jù)庫(kù)集群中的各數(shù)據(jù)庫(kù),以獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及當(dāng)前的備庫(kù)信息,并據(jù)此對(duì)元數(shù)據(jù)進(jìn)行更新,而無(wú)需人為對(duì)元數(shù)據(jù)進(jìn)行更新,因此提高了元數(shù)據(jù)更新的效率和準(zhǔn)確性。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0014]圖1為本申請(qǐng)實(shí)施例提供的元數(shù)據(jù)的更新過(guò)程;
[0015]圖2為本申請(qǐng)實(shí)施例提供的更新裝置通過(guò)堆棧的方式訪問(wèn)各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)的過(guò)程;
[0016]圖3為本申請(qǐng)實(shí)施例提供的Oracle數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)構(gòu)示意圖;
[0017]圖4為本申請(qǐng)實(shí)施例提供的對(duì)Oracle數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新的詳細(xì)過(guò)程;
[0018]圖5為本申請(qǐng)實(shí)施例提供的MySQL數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)構(gòu)示意圖;
[0019]圖6為本申請(qǐng)實(shí)施例提供的對(duì)MySQL數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新的詳細(xì)過(guò)程;
[0020]圖7為本申請(qǐng)實(shí)施例提供的元數(shù)據(jù)的更新裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0021]下面結(jié)合說(shuō)明書(shū)附圖對(duì)本申請(qǐng)實(shí)施例進(jìn)行詳細(xì)描述。
[0022]圖1為本申請(qǐng)實(shí)施例提供的元數(shù)據(jù)的更新過(guò)程,具體包括以下步驟:
[0023]SlOl:更新裝置針對(duì)數(shù)據(jù)庫(kù)集群,讀取當(dāng)前保存的該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的該元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí)。
[0024]由于對(duì)于一個(gè)數(shù)據(jù)庫(kù)集群而言,該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)記錄了該數(shù)據(jù)庫(kù)集群中各數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)(用于描述該數(shù)據(jù)庫(kù)集群中各數(shù)據(jù)庫(kù)之間的主備關(guān)系和級(jí)聯(lián)關(guān)系),因此,在本申請(qǐng)實(shí)施例中,更新裝置讀取當(dāng)前保存的該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),并確定讀取到的該元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí)。
[0025]S102:訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及各數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中。
[0026]確定了當(dāng)前保存的該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí)后,更新裝置對(duì)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),針對(duì)訪問(wèn)的每個(gè)數(shù)據(jù)庫(kù),從該數(shù)據(jù)庫(kù)中獲取該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息,以及該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中。
[0027]S103:將該更新元數(shù)據(jù)重新作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
[0028]將訪問(wèn)的各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及備庫(kù)信息記錄在更新元數(shù)據(jù)中后,則可將該更新元數(shù)據(jù)重新作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。此時(shí),更新裝置保存的元數(shù)據(jù)(更新元數(shù)據(jù))中就記錄了當(dāng)前該數(shù)據(jù)庫(kù)中每個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)信息以及每個(gè)數(shù)據(jù)庫(kù)的備庫(kù)信息,因此可以準(zhǔn)確的描述當(dāng)前該數(shù)據(jù)庫(kù)中各數(shù)據(jù)庫(kù)之前的主備關(guān)系和級(jí)聯(lián)關(guān)系。
[0029]通過(guò)上述方法,更新裝置可根據(jù)當(dāng)前保存的數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)該數(shù)據(jù)庫(kù)集群中的各數(shù)據(jù)庫(kù),以獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息和當(dāng)前的備庫(kù)信息,并據(jù)此對(duì)元數(shù)據(jù)進(jìn)行更新,而無(wú)需人為的對(duì)元數(shù)據(jù)進(jìn)行更新,因此提高了元數(shù)據(jù)更新的效率和準(zhǔn)確性。
[0030]具體的,更新裝置可以通過(guò)堆棧的方式訪問(wèn)通過(guò)步驟SlOl確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),則更新裝置執(zhí)行如圖1所示的步驟S102和S103的方法可以如圖2所示。[0031]圖2為本申請(qǐng)實(shí)施例提供的更新裝置通過(guò)堆棧的方式訪問(wèn)各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)的過(guò)程,具體包括以下步驟:
[0032]S1021:將確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到預(yù)置的堆棧中。
[0033]在本申請(qǐng)實(shí)施例中,可預(yù)先在更新裝置中預(yù)置一個(gè)堆棧,在通過(guò)步驟SlOl確定了各數(shù)據(jù)庫(kù)標(biāo)識(shí)后,可將確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)進(jìn)行入棧操作,即,將確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到預(yù)置的該堆棧中。其中,可按照任意順序?qū)⒏鲾?shù)據(jù)庫(kù)標(biāo)識(shí)添加到預(yù)置的該堆棧中。
[0034]例如,假設(shè)更新裝置通過(guò)步驟SlOl確定的數(shù)據(jù)庫(kù)標(biāo)識(shí)為標(biāo)識(shí)1、標(biāo)識(shí)2、標(biāo)識(shí)3,這三個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)分別對(duì)應(yīng)于數(shù)據(jù)庫(kù)1、數(shù)據(jù)庫(kù)2、數(shù)據(jù)庫(kù)3,則更新裝置以任意順序?qū)⑦@三個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到預(yù)置的堆棧中。
[0035]另外,對(duì)于一個(gè)數(shù)據(jù)庫(kù)集群來(lái)說(shuō),如果更新裝置未保存該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),則在步驟SlOl中,更新裝置可將預(yù)先保存的預(yù)置文件作為當(dāng)前保存的該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行讀取,其中,該預(yù)置文件中記錄了該數(shù)據(jù)庫(kù)集群中的至少一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)。當(dāng)更新裝置讀取的是預(yù)置文件時(shí),則步驟S1021中更新裝置添加到堆棧中的即為該預(yù)置文件中記錄的數(shù)據(jù)庫(kù)標(biāo)識(shí)。
[0036]S1022:從該堆棧中彈出一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)彈出的該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),獲取該數(shù)據(jù)庫(kù)的配置文件。
[0037]繼續(xù)沿用上例,假設(shè)將上述三個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到堆棧中的順序?yàn)闃?biāo)識(shí)3、標(biāo)識(shí)
1、標(biāo)識(shí)2,且該堆棧為“先入后出”類(lèi)型的堆棧,則從該堆棧彈出這三個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)時(shí),以添加這三個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)的逆順序依次進(jìn)行彈出。
[0038]S卩,先彈出標(biāo)識(shí)2,則更新裝置通過(guò)數(shù)據(jù)庫(kù)接口(Data Base Interface, DBI)訪問(wèn)彈出的該標(biāo)識(shí)2對(duì)應(yīng)的數(shù)據(jù)庫(kù)2,獲取該數(shù)據(jù)庫(kù)2的配置文件。
[0039]S1023:根據(jù)獲取到的該數(shù)據(jù)庫(kù)的配置文件,確定該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中。
[0040]繼續(xù)沿用上例,更新裝置根據(jù)獲取到的該數(shù)據(jù)庫(kù)2的配置文件,確定該數(shù)據(jù)庫(kù)2當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)2當(dāng)前的備庫(kù)信息。其中,一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)信息包括但不限于該數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)、網(wǎng)絡(luò)互聯(lián)協(xié)議(InternetPiOtocol,IP)地址信息、端口信息,相應(yīng)的,該數(shù)據(jù)庫(kù)的備庫(kù)信息包括但不限于該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)、IP地址信息、端口信
肩、O
[0041]具體的,如果要更新的是Oracle數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),則在上述步驟S1022中,更新裝置獲取的該數(shù)據(jù)庫(kù)的配置文件包括但不限于tnsnames.0ra配置文件,在步驟S1023中,更新裝置可根據(jù)獲取到的tnsnames.0ra配置文件,確定該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息。
[0042]假設(shè)數(shù)據(jù)庫(kù)2的備庫(kù)為數(shù)據(jù)庫(kù)I,則更新裝置通過(guò)該數(shù)據(jù)庫(kù)2的tnsnames.0ra配置文件,可確定該數(shù)據(jù)庫(kù)2的備庫(kù)(數(shù)據(jù)庫(kù)I)的數(shù)據(jù)庫(kù)信息。
[0043]更新裝置確定了數(shù)據(jù)庫(kù)2當(dāng)前的數(shù)據(jù)庫(kù)信息和數(shù)據(jù)庫(kù)2當(dāng)前的備庫(kù)信息后,則將數(shù)據(jù)庫(kù)2當(dāng)前的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中。
[0044]S1024:判斷當(dāng)前該堆棧中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí),若是,則返回步驟S1022,否則執(zhí)行步驟S103。
[0045]繼續(xù)沿用上例,更新裝置將數(shù)據(jù)庫(kù)2當(dāng)前的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中后,判斷當(dāng)前該堆棧中是否仍然存在數(shù)據(jù)庫(kù)標(biāo)識(shí)。由于添加到該堆棧中的數(shù)據(jù)庫(kù)標(biāo)識(shí)為標(biāo)識(shí)3、標(biāo)識(shí)1、標(biāo)識(shí)2,而現(xiàn)在只彈出了標(biāo)識(shí)2,因此當(dāng)前該堆棧中還存在標(biāo)識(shí)3和標(biāo)識(shí)1,因此,判斷結(jié)果為是,返回步驟S1022,S卩,更新裝置從該堆棧中彈出標(biāo)識(shí)I (按添加這三個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)的逆順序進(jìn)行彈出),訪問(wèn)該標(biāo)識(shí)I對(duì)應(yīng)的數(shù)據(jù)庫(kù)1,并繼續(xù)執(zhí)行后續(xù)步驟。
[0046]S103:將該更新元數(shù)據(jù)重新作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
[0047]當(dāng)更新裝置已經(jīng)將標(biāo)識(shí)3彈出,并將該標(biāo)識(shí)3對(duì)應(yīng)的數(shù)據(jù)庫(kù)3當(dāng)前的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中后,則該堆棧中就已經(jīng)不存在任何數(shù)據(jù)庫(kù)標(biāo)識(shí),上述步驟S1024的判斷結(jié)果為否,此時(shí),該更新元數(shù)據(jù)中已經(jīng)記錄了該數(shù)據(jù)庫(kù)集群中每個(gè)數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)1、數(shù)據(jù)庫(kù)2、數(shù)據(jù)庫(kù)3)當(dāng)前的數(shù)據(jù)庫(kù)信息以及備庫(kù)信息,因此更新裝置可將該更新元數(shù)據(jù)重新作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
[0048]通過(guò)上述方法,當(dāng)數(shù)據(jù)庫(kù)集群中的各數(shù)據(jù)庫(kù)進(jìn)行主備切換時(shí),更新裝置則可以準(zhǔn)確的通過(guò)各數(shù)據(jù)庫(kù)的配置文件,確定各數(shù)據(jù)庫(kù)最新的數(shù)據(jù)庫(kù)信息以及備庫(kù)信息,從而可以準(zhǔn)確的對(duì)元數(shù)據(jù)進(jìn)行更新。
[0049]進(jìn)一步的,考慮到數(shù)據(jù)庫(kù)集群中可能會(huì)存在某個(gè)數(shù)據(jù)庫(kù)下線的情況,因此,為了進(jìn)一步提高對(duì)元數(shù)據(jù)進(jìn)行更新的準(zhǔn)確性,在上述步驟S1023中,更新裝置針對(duì)從堆棧中彈出的一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),將該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息記錄在更新元數(shù)據(jù)中之前,需要先確定該數(shù)據(jù)庫(kù)處于服務(wù)狀態(tài)。
[0050]也即,更新裝置針對(duì)從堆棧中彈出的一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),判斷該數(shù)據(jù)庫(kù)是否處于服務(wù)狀態(tài),若是,則獲取該數(shù)據(jù)庫(kù)的配置文件,并根據(jù)獲取的配置文件確定該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息和備庫(kù)信息,記錄在更新元數(shù)據(jù)中,否則,說(shuō)明該數(shù)據(jù)庫(kù)是一個(gè)下線的數(shù)據(jù)庫(kù),更新裝置可以直接返回上述步驟S1022,繼續(xù)從堆棧中彈出下一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),并執(zhí)行后續(xù)步驟。這樣,對(duì)于下線的數(shù)據(jù)庫(kù)來(lái)說(shuō),該數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)信息就不會(huì)被記錄在更新元數(shù)據(jù)中。
[0051]更進(jìn)一步的,考慮到數(shù)據(jù)庫(kù)集群中可能會(huì)存在新增數(shù)據(jù)庫(kù)的情況,因此,為了進(jìn)一步提高對(duì)元數(shù)據(jù)進(jìn)行更新的準(zhǔn)確性,在更新裝置將彈出的數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)之后,判斷當(dāng)前該堆棧中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí)之前,還要確定該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息中包含的該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),如果當(dāng)前該堆棧中不存在該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),則將該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到該堆棧中。
[0052]S卩,如果彈出的數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)當(dāng)前的某一個(gè)備庫(kù)是新增的數(shù)據(jù)庫(kù),則更新裝置在步驟SlOl中讀取的元數(shù)據(jù)中并未記錄有該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),因此,將該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中后,將該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到該堆棧中,后續(xù)則可以獲取到作為該備庫(kù)的數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及備庫(kù)信息,并記錄在更新元數(shù)據(jù)中。
[0053]下面以更新Oracle數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)為例,對(duì)上述過(guò)程進(jìn)行詳細(xì)說(shuō)明。
[0054]圖3為本申請(qǐng)實(shí)施例提供的Oracle數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)構(gòu)示意圖,如圖3所示,該數(shù)據(jù)庫(kù)集群中共包括6個(gè)數(shù)據(jù)庫(kù),分別是數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B、數(shù)據(jù)庫(kù)C、數(shù)據(jù)庫(kù)D、數(shù)據(jù)庫(kù)E、數(shù)據(jù)庫(kù)F。其中,數(shù)據(jù)庫(kù)A為主庫(kù),數(shù)據(jù)庫(kù)B、數(shù)據(jù)庫(kù)C、數(shù)據(jù)庫(kù)D是數(shù)據(jù)庫(kù)A的備庫(kù),數(shù)據(jù)庫(kù)E、數(shù)據(jù)庫(kù)F是數(shù)據(jù)庫(kù)B的備庫(kù)。由圖3可見(jiàn),Oracle數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)構(gòu)是一個(gè)樹(shù)形結(jié)構(gòu),其中位于根節(jié)點(diǎn)的數(shù)據(jù)庫(kù)A為主庫(kù),其他數(shù)據(jù)庫(kù)均為備庫(kù)。對(duì)該Oracle數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新的過(guò)程具體可以如圖4所示。[0055]圖4為本申請(qǐng)實(shí)施例提供的對(duì)Oracle數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新的詳細(xì)過(guò)程,具體包括以下步驟:
[0056]S401:更新裝置讀取當(dāng)前保存的該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的該元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí)。
[0057]其中,如果該Oracle數(shù)據(jù)庫(kù)集群是一個(gè)新上線的數(shù)據(jù)庫(kù)集群,則更新裝置當(dāng)前尚未保存該Oracle數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),此時(shí)更新裝置可以將預(yù)先保存的預(yù)置文件作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行讀取。
[0058]具體的,可預(yù)先在更新裝置中預(yù)置一個(gè)預(yù)置文件,該預(yù)置文件中記錄該Oracle數(shù)據(jù)庫(kù)集群中的至少一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)。由于Oracle數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)構(gòu)是如圖3所示的樹(shù)形結(jié)構(gòu),因此,可將位于該樹(shù)形結(jié)構(gòu)的根節(jié)點(diǎn)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)記錄在該預(yù)置文件中,即,將主庫(kù)(數(shù)據(jù)庫(kù)A)的數(shù)據(jù)庫(kù)標(biāo)識(shí)記錄在預(yù)置文件中。
[0059]S402:將確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到預(yù)置的堆棧中。
[0060]S403:從該堆棧中彈出一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)彈出的該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
[0061]S404:判斷該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)是否處于服務(wù)狀態(tài),若是,則執(zhí)行步驟S405,否則返回步驟S403。
[0062]也即,如果堆棧中某個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)并未處于服務(wù)狀態(tài),則說(shuō)明該數(shù)據(jù)庫(kù)是已經(jīng)下線的數(shù)據(jù)庫(kù),因此并不將該數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中,返回步驟S403,繼續(xù)彈出下一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)。
[0063]S405:獲取該數(shù)據(jù)庫(kù)的配置文件。
[0064]S406:根據(jù)獲取到的該數(shù)據(jù)庫(kù)的配置文件,確定該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中。
[0065]S407:確定該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息中包含的備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),如果當(dāng)前該堆棧中不存在該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),則將該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到該堆棧中。
[0066]S408:判斷當(dāng)前該堆棧中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí),若是,則返回步驟S403,否則執(zhí)行步驟S409。
[0067]S409:將該更新元數(shù)據(jù)重新作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
[0068]通過(guò)上述方法,當(dāng)如圖3所示的Oracle數(shù)據(jù)庫(kù)集群的主備關(guān)系發(fā)生改變時(shí),更新裝置可根據(jù)各數(shù)據(jù)庫(kù)的配置文件,準(zhǔn)確的對(duì)元數(shù)據(jù)進(jìn)行更新。
[0069]當(dāng)如圖3所示的Oracle數(shù)據(jù)庫(kù)集群中某個(gè)數(shù)據(jù)庫(kù)下線時(shí),更新裝置也會(huì)通過(guò)上述步驟S404判斷出該數(shù)據(jù)庫(kù)未處于服務(wù)狀態(tài),因此不將該數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中。
[0070]當(dāng)如圖3所示的Oracle數(shù)據(jù)庫(kù)集群中新增某個(gè)數(shù)據(jù)庫(kù),或者如圖3所示的Oracle數(shù)據(jù)庫(kù)集群是一個(gè)新上線的數(shù)據(jù)庫(kù)集群時(shí),雖然通過(guò)上述步驟S402第一次添加到堆棧中的數(shù)據(jù)庫(kù)標(biāo)識(shí)可能并不完整,但是通過(guò)步驟S407,更新裝置則可逐步的將Oracle數(shù)據(jù)庫(kù)集群中的所有數(shù)據(jù)庫(kù)標(biāo)識(shí)都添加到堆棧中,后續(xù)則可以準(zhǔn)確的將每個(gè)數(shù)據(jù)庫(kù)(包括新增數(shù)據(jù)庫(kù))的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中。
[0071]而且,當(dāng)如圖3所示的Oracle數(shù)據(jù)庫(kù)集群是一個(gè)新上線的數(shù)據(jù)庫(kù)集群時(shí),只需要人工預(yù)置一次預(yù)置文件(記錄主庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí))即可,后續(xù)再對(duì)該Oracle數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新時(shí),則由于更新裝置已經(jīng)保存了該Oracle數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),因此無(wú)需再人工預(yù)置該預(yù)置文件,直接讀取保存的元數(shù)據(jù)即可。
[0072]以上是本申請(qǐng)實(shí)施例提供的對(duì)Oracle數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新的過(guò)程。下面再以更新MySQL數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)為例,對(duì)元數(shù)據(jù)的更新過(guò)程進(jìn)行詳細(xì)說(shuō)明。
[0073]圖5為本申請(qǐng)實(shí)施例提供的MySQL數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)構(gòu)示意圖,如圖5所示,該數(shù)據(jù)庫(kù)集群中共包括6個(gè)數(shù)據(jù)庫(kù),分別是數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B、數(shù)據(jù)庫(kù)C、數(shù)據(jù)庫(kù)D、數(shù)據(jù)庫(kù)E、數(shù)據(jù)庫(kù)F。其中,數(shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)B均是主庫(kù),數(shù)據(jù)庫(kù)C、數(shù)據(jù)庫(kù)D是數(shù)據(jù)庫(kù)A的備庫(kù),數(shù)據(jù)庫(kù)B是數(shù)據(jù)庫(kù)C的備庫(kù),數(shù)據(jù)庫(kù)A是數(shù)據(jù)庫(kù)B的備庫(kù),數(shù)據(jù)庫(kù)E、數(shù)據(jù)庫(kù)F是數(shù)據(jù)庫(kù)D的備庫(kù)。
[0074]由圖5可見(jiàn),與如圖3所示的Oracle數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)構(gòu)有所不同的是,MySQL數(shù)據(jù)庫(kù)集群并不完全是一個(gè)樹(shù)形結(jié)構(gòu),其中存在環(huán)形結(jié)構(gòu),圖5中的環(huán)形結(jié)構(gòu)就是由數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B、數(shù)據(jù)庫(kù)C構(gòu)成的,即,數(shù)據(jù)庫(kù)A是數(shù)據(jù)庫(kù)B的備庫(kù)、數(shù)據(jù)庫(kù)B是數(shù)據(jù)庫(kù)C的備庫(kù)、數(shù)據(jù)庫(kù)C是數(shù)據(jù)庫(kù)A的備庫(kù)。也即,在MySQL數(shù)據(jù)庫(kù)集群中,可以存在多個(gè)主庫(kù),而且主庫(kù)也可以作為其他數(shù)據(jù)庫(kù)的備庫(kù)。對(duì)該MySQL數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新的過(guò)程具體可以如圖6所示。
[0075]圖6為本申請(qǐng)實(shí)施例提供的對(duì)MySQL數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新的詳細(xì)過(guò)程,具體包括以下步驟:
[0076]S601:更新裝置讀取當(dāng)前保存的該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的該元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí)。
[0077]具體的,如果該 MySQL數(shù)據(jù)庫(kù)集群是一個(gè)新上線的數(shù)據(jù)庫(kù)集群,則更新裝置當(dāng)前尚未保存該MySQL數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),此時(shí)更新裝置可以將預(yù)先保存的預(yù)置文件作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行讀取。
[0078]其中,可預(yù)先在更新裝置中預(yù)置一個(gè)預(yù)置文件,該預(yù)置文件中記錄該MySQL數(shù)據(jù)庫(kù)集群中的至少一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí)。較佳的,可將至少一個(gè)主庫(kù)(數(shù)據(jù)庫(kù)A或數(shù)據(jù)庫(kù)B)的數(shù)據(jù)庫(kù)標(biāo)識(shí)記錄在該預(yù)置文件中。
[0079]S602:將確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到預(yù)置的堆棧中。
[0080]S603:從該堆棧中彈出一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)彈出的該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
[0081]S604:判斷該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù)是否處于服務(wù)狀態(tài),若是,則執(zhí)行步驟S605,否則返回步驟S603。
[0082]S605:獲取該數(shù)據(jù)庫(kù)的配置文件.[0083]S606:根據(jù)獲取到的該數(shù)據(jù)庫(kù)的配置文件,確定該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中。
[0084]S607:確定該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息中包含的備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),如果當(dāng)前該堆棧中不存在該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),且在本次更新元數(shù)據(jù)的過(guò)程中未訪問(wèn)過(guò)該備庫(kù),則將該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到該堆棧中。
[0085]S608:判斷當(dāng)前該堆棧中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí),若是,則返回步驟S603,否則執(zhí)行步驟S609。
[0086]S609:將該更新元數(shù)據(jù)重新作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
[0087]由圖6所示的過(guò)程可以看出,圖6所示的步驟S607與圖4所示的步驟S407的區(qū)別就在于,當(dāng)對(duì)MySQL數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新時(shí),如果某個(gè)數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)不存在于堆棧中,則還要確定在本次對(duì)元數(shù)據(jù)進(jìn)行更新的過(guò)程中未訪問(wèn)過(guò)該備庫(kù),才將該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到該堆棧中,如果已經(jīng)訪問(wèn)過(guò)該備庫(kù),則不將該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到該堆棧中。
[0088]仍以圖5所示的MySQL數(shù)據(jù)庫(kù)集群為例進(jìn)行說(shuō)明,假設(shè)將數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B、數(shù)據(jù)庫(kù)C的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到了堆棧中,S卩,當(dāng)前堆棧中的數(shù)據(jù)庫(kù)標(biāo)識(shí)為:數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B、數(shù)據(jù)庫(kù)C的數(shù)據(jù)庫(kù)標(biāo)識(shí)。則:
[0089]先從堆棧中彈出數(shù)據(jù)庫(kù)C的數(shù)據(jù)庫(kù)標(biāo)識(shí),并將數(shù)據(jù)庫(kù)C當(dāng)前的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中,而該數(shù)據(jù)庫(kù)C的備庫(kù)是數(shù)據(jù)庫(kù)B,數(shù)據(jù)庫(kù)B的數(shù)據(jù)庫(kù)標(biāo)識(shí)存在于堆棧中,因此不向堆棧添加數(shù)據(jù)庫(kù)B的數(shù)據(jù)庫(kù)標(biāo)識(shí),此時(shí),堆棧中的數(shù)據(jù)庫(kù)標(biāo)識(shí)為:數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B的數(shù)據(jù)庫(kù)標(biāo)識(shí);
[0090]再?gòu)亩褩V袕棾鰯?shù)據(jù)庫(kù)B的數(shù)據(jù)庫(kù)標(biāo)識(shí),并將數(shù)據(jù)庫(kù)B當(dāng)前的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中,而該數(shù)據(jù)庫(kù)B的備庫(kù)是數(shù)據(jù)庫(kù)A,數(shù)據(jù)庫(kù)A的數(shù)據(jù)庫(kù)標(biāo)識(shí)也存在于堆棧中,因此不向堆棧添加數(shù)據(jù)庫(kù)A的數(shù)據(jù)庫(kù)標(biāo)識(shí),此時(shí),堆棧中的數(shù)據(jù)庫(kù)標(biāo)識(shí)為:數(shù)據(jù)庫(kù)A的數(shù)據(jù)庫(kù)標(biāo)識(shí);
[0091]最后從堆棧中彈出數(shù)據(jù)庫(kù)A的數(shù)據(jù)庫(kù)標(biāo)識(shí),并將數(shù)據(jù)庫(kù)A當(dāng)前的數(shù)據(jù)庫(kù)信息和備庫(kù)信息記錄在更新元數(shù)據(jù)中,而該數(shù)據(jù)庫(kù)A的備庫(kù)是數(shù)據(jù)庫(kù)C和數(shù)據(jù)庫(kù)D,由于此時(shí)數(shù)據(jù)庫(kù)C和數(shù)據(jù)庫(kù)D的數(shù)據(jù)庫(kù)標(biāo)識(shí)并不存在于堆棧中,但數(shù)據(jù)庫(kù)C在本次對(duì)元數(shù)據(jù)進(jìn)行更新的過(guò)程中已經(jīng)訪問(wèn)過(guò),因此不向堆棧添加數(shù)據(jù)庫(kù)C的數(shù)據(jù)庫(kù)標(biāo)識(shí),只添加數(shù)據(jù)庫(kù)D的數(shù)據(jù)庫(kù)標(biāo)識(shí),此時(shí),堆棧中的數(shù)據(jù)庫(kù)標(biāo)識(shí)為:數(shù)據(jù)庫(kù)D的數(shù)據(jù)庫(kù)標(biāo)識(shí)。
[0092]可見(jiàn),由于圖5中MySQL數(shù)據(jù)庫(kù)集群的拓?fù)浣Y(jié)構(gòu)中存在由數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B、數(shù)據(jù)庫(kù)C構(gòu)成的環(huán)形結(jié)構(gòu),因此,如果在彈出數(shù)據(jù)庫(kù)A的數(shù)據(jù)庫(kù)標(biāo)識(shí)時(shí),將作為該數(shù)據(jù)庫(kù)A的備庫(kù)的數(shù)據(jù)庫(kù)C的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到堆棧中,則會(huì)造成死循環(huán)。從而,在上述圖6所示的對(duì)MySQL數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行更新時(shí),步驟S607中就需要僅將當(dāng)前堆棧中不存在的、且本次對(duì)元數(shù)據(jù)進(jìn)行更新的過(guò)程中未訪問(wèn)過(guò)的備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到堆棧中,對(duì)于當(dāng)前堆棧中已經(jīng)存在的,或者本次對(duì)元數(shù)據(jù)進(jìn)行更新的過(guò)程中已經(jīng)訪問(wèn)過(guò)的備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),則不添加到堆棧中。
[0093]當(dāng)然,上述圖6所示的方法也可以應(yīng)用于對(duì)Oracle的元數(shù)據(jù)進(jìn)行更新的過(guò)程,可以達(dá)到同樣的效果。
[0094]以上是本申請(qǐng)實(shí)施例提供的元數(shù)據(jù)的更新方法,基于同樣的思路,本申請(qǐng)實(shí)施例還提供一種元數(shù)據(jù)的更新裝置,如圖7所示。
[0095]圖7為本申請(qǐng)實(shí)施例提供的元數(shù)據(jù)的更新裝置結(jié)構(gòu)示意圖,具體包括:
[0096]讀取模塊701,用于針對(duì)數(shù)據(jù)庫(kù)集群,讀取當(dāng)前保存的所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的所述元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí);
[0097]收集模塊702,用于訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及各數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中,將所述更新元數(shù)據(jù)重新作為所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
[0098]所述收集模塊702具體包括:
[0099]堆棧單元7021,用于將確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到預(yù)置的堆棧中;
[0100]訪問(wèn)單元7022,用于從所述堆棧中彈出一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)彈出的該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),獲取該數(shù)據(jù)庫(kù)的配置文件;
[0101]記錄單元7023,用于根據(jù)獲取到的該數(shù)據(jù)庫(kù)的配置文件,確定該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新單元中;
[0102]判斷更新單元7024,用于判斷當(dāng)前所述堆棧中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí),若是,則指示所述訪問(wèn)單元7022再次從所述堆棧中彈出一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),并繼續(xù)進(jìn)行后續(xù)步驟,否則,將所述更新元數(shù)據(jù)重新作為所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
[0103]所述記錄單元7023還用于,在將該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的悲苦信息記錄在更新元數(shù)據(jù)中之前,確定該數(shù)據(jù)庫(kù)處于服務(wù)狀態(tài)。
[0104]所述記錄單元7023還用于,在所述判斷更新單元7024判斷當(dāng)前所述堆棧中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí)之前,確定該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息中包含的該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),如果當(dāng)前所述堆棧中不存在該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),則將該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到所述堆棧中。
[0105]所述讀取模塊701具體用于,當(dāng)未保存所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)時(shí),將預(yù)先保存的預(yù)置文件作為當(dāng)前保存的所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行讀取,其中,所述預(yù)置文件中記錄了所述數(shù)據(jù)庫(kù)集群中的至少一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)。
[0106]本申請(qǐng)實(shí)施例提供一種元數(shù)據(jù)的更新方法及裝置,該方法更新裝置讀取當(dāng)前保存的數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí),并訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及各數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中,將該更新元數(shù)據(jù)重新作為該數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。通過(guò)上述方法,更新裝置可根據(jù)當(dāng)前保存的數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)該數(shù)據(jù)庫(kù)集群中的各數(shù)據(jù)庫(kù),以獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及當(dāng)前的備庫(kù)信息,并據(jù)此對(duì)元數(shù)據(jù)進(jìn)行更新,而無(wú)需人為對(duì)元數(shù)據(jù)進(jìn)行更新,因此提高了元數(shù)據(jù)更新的效率和準(zhǔn)確性。
[0107]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0108]本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0109]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。[0110]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0111]盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。
[0112]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種元數(shù)據(jù)的更新方法,其特征在于,包括: 更新裝置針對(duì)數(shù)據(jù)庫(kù)集群,讀取當(dāng)前保存的所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的所述元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí);并 訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及各數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中;以及將所述更新元數(shù)據(jù)重新作為所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
2.如權(quán)利要求1所述的方法,其特征在于,訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及各數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中,將所述更新元數(shù)據(jù)重新作為所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存,具體包括: 所述更新裝置執(zhí)行下述步驟Al: 步驟A、將確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到預(yù)置的堆棧中; 步驟B、從所述堆棧中彈出一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)彈出的該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),獲取該數(shù)據(jù)庫(kù)的配置文件; 步驟C、根據(jù)獲取到的該數(shù)據(jù)庫(kù)的配置文件,確定該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中; 步驟D、判斷當(dāng)前所述堆棧 中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí),若是,則返回步驟B,否則執(zhí)行步驟E ; 步驟E、將所述更新元數(shù)據(jù)重新作為所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
3.如權(quán)利要求2所述的方法,其特征在于,將該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息記錄在更新元數(shù)據(jù)中之前,所述方法還包括: 確定該數(shù)據(jù)庫(kù)處于服務(wù)狀態(tài)。
4.如權(quán)利要求2所述的方法,其特征在于,判斷當(dāng)前所述堆棧中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí)之前,所述方法還包括: 確定該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息中包含的該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí); 如果當(dāng)前所述堆棧中不存在該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),則將該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到所述堆棧中。
5.如權(quán)利要求2所述的方法,其特征在于,讀取當(dāng)前保存的所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),具體包括: 當(dāng)所述更新裝置未保存所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)時(shí),將預(yù)先保存的預(yù)置文件作為當(dāng)前保存的所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行讀取,其中,所述預(yù)置文件中記錄了所述數(shù)據(jù)庫(kù)集群中的至少一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)。
6.一種元數(shù)據(jù)的更新裝置,其特征在于,包括: 讀取模塊,用于針對(duì)數(shù)據(jù)庫(kù)集群,讀取當(dāng)前保存的所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù),確定讀取的所述元數(shù)據(jù)中記錄的各數(shù)據(jù)庫(kù)標(biāo)識(shí); 收集模塊,用于訪問(wèn)確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),從各數(shù)據(jù)庫(kù)中獲取各數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及各數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新元數(shù)據(jù)中,將所述更新元數(shù)據(jù)重新作為所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
7.如權(quán)利要求6所述的裝置,其特征在于,所述收集模塊具體包括: 堆棧單元,用于將確定的各數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到預(yù)置的堆棧中;訪問(wèn)單元,用于從所述堆棧中彈出一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),訪問(wèn)彈出的該數(shù)據(jù)庫(kù)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)庫(kù),獲取該數(shù)據(jù)庫(kù)的配置文件; 記錄單元,用于根據(jù)獲取到的該數(shù)據(jù)庫(kù)的配置文件,確定該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息,并記錄在更新單元中; 判斷更新單元,用于判斷當(dāng)前所述堆棧中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí),若是,則指示所述訪問(wèn)單元再次從所述堆棧中彈出一個(gè)數(shù)據(jù)庫(kù)標(biāo)識(shí),并繼續(xù)進(jìn)行后續(xù)步驟,否則,將所述更新元數(shù)據(jù)重新作為所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)保存。
8.如權(quán)利要求7所述的裝置,其特征在于,所述記錄單元還用于,在將該數(shù)據(jù)庫(kù)當(dāng)前的數(shù)據(jù)庫(kù)信息以及該數(shù)據(jù)庫(kù)當(dāng)前的悲苦信息記錄在更新元數(shù)據(jù)中之前,確定該數(shù)據(jù)庫(kù)處于服務(wù)狀態(tài)。
9.如權(quán)利要求7所述的裝置,其特征在于,所述記錄單元還用于,在所述判斷更新單元判斷當(dāng)前所述堆棧中是否存在數(shù)據(jù)庫(kù)標(biāo)識(shí)之前,確定該數(shù)據(jù)庫(kù)當(dāng)前的備庫(kù)信息中包含的該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),如果當(dāng)前所述堆棧中不存在該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí),則將該備庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)添加到所述堆棧中。
10.如權(quán)利要求7所述的裝置,其特征在于,所述讀取模塊具體用于,當(dāng)未保存所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)時(shí),將預(yù)先保存的預(yù)置文件作為當(dāng)前保存的所述數(shù)據(jù)庫(kù)集群的元數(shù)據(jù)進(jìn)行讀取,其中,所 述預(yù)置文件中記錄了所述數(shù)據(jù)庫(kù)集群中的至少一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)標(biāo)識(shí)。
【文檔編號(hào)】G06F17/30GK103838761SQ201210484979
【公開(kāi)日】2014年6月4日 申請(qǐng)日期:2012年11月23日 優(yōu)先權(quán)日:2012年11月23日
【發(fā)明者】劉謀俊 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司