一種具備高可用性的數(shù)據(jù)庫的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,尤其涉及一種具備高可用性的數(shù)據(jù)庫。
【背景技術(shù)】
[0002]隨著現(xiàn)代計算機科學(xué)技術(shù)的發(fā)展,數(shù)據(jù)庫已逐步成為計算機信息系統(tǒng)的基礎(chǔ)和核心,被廣泛應(yīng)用于電信、金融、政府、企業(yè)、能源等關(guān)鍵行業(yè)。數(shù)據(jù)庫應(yīng)用的高可用性也越來越引起人們的關(guān)注。在高可用的解釋方面,有人給出了如下的詮釋:
[0003](I)系統(tǒng)失敗或崩潰(system faults and crashes);
[0004](2)應(yīng)用層或者中間層錯誤(applicat1n and middleware failures);
[0005](3)網(wǎng)絡(luò)失敗(network failures);
[0006](4)介質(zhì)失敗,一般指存放數(shù)據(jù)的媒體故障(media failures);
[0007](5)人為失誤(Human Error);
[0008](6)容災(zāi)(Disasters and extended outages);
[0009](7)計劃宕機與維護(Planned downtime, maintenance and management tasks) o
[0010]由此可見,高可用不僅僅包含了系統(tǒng)本身故障,應(yīng)用層的錯誤,人為錯誤等等,還應(yīng)當(dāng)包括數(shù)據(jù)冗余、容災(zāi)以及計劃的維護時間,也就是說,一個真正的高可用環(huán)境,不僅僅是能避免系統(tǒng)本身的問題,還應(yīng)當(dāng)能防止天災(zāi)人禍,以及有一個簡單可靠的系統(tǒng)維護方法(如硬件升級、軟件升級等等計劃停機維護)。
[0011]對于oracle數(shù)據(jù)庫來說,一般采用的是雙機熱備的方式達到高可用性。如圖1所示,常用的做法是采用兩臺(或多臺)服務(wù)器,使用共享的存儲設(shè)備(磁盤陣列柜或存儲區(qū)域網(wǎng)SAN)。兩臺服務(wù)器系統(tǒng)A (SYSTEM A)與系統(tǒng)B(SYSTEM B)可以采用互備、主從、并行等不同的方式。在工作過程中,兩臺服務(wù)器將以一個虛擬的IP地址對外提供服務(wù),依工作方式的不同,將服務(wù)請求發(fā)送給其中一臺服務(wù)器承擔(dān)。同時,服務(wù)器通過心跳線(listener)偵測另一臺服務(wù)器的工作狀況。當(dāng)一臺服務(wù)器出現(xiàn)故障時,另一臺服務(wù)器根據(jù)心跳偵測的情況做出判斷,并進行切換,接管服務(wù)。對于用戶而言,這一過程是全自動的在很短時間內(nèi)完成,從而對業(yè)務(wù)不會造成影響。由于使用共享的存儲設(shè)備,因此兩臺服務(wù)器使用的實際上是一樣的數(shù)據(jù),由雙機或集群軟件對其進行管理。這方式的優(yōu)點是有利于數(shù)據(jù)庫的升級,當(dāng)其中系統(tǒng)A需要升級的時候,就把服務(wù)切換到系統(tǒng)B上運行,升級A的oracle程序,之后還可以把服務(wù)切換回到A來,然后升級B的oracle程序。這個升級過程不會影響用戶的oracle使用,因為總有一臺機器可以使用oracle程序來響應(yīng)用戶的服務(wù)請求,同時由于保存了兩份數(shù)據(jù)庫的數(shù)據(jù)文件,這樣如果其中一臺服務(wù)器出現(xiàn)了數(shù)據(jù)損壞或者文件丟失,也不會因為單點故障導(dǎo)致數(shù)據(jù)無法恢復(fù)了。
[0012]雖然oracle的雙機熱備機制可以解決單點故障和數(shù)據(jù)安全等問題,但是其自身的局限性和缺點也尤為明顯,存在的問題有如下幾個方面:
[0013](I)只有一臺機器發(fā)揮作用,另外的機器浪費投資;
[0014](2)性能相對較差,單一數(shù)據(jù)庫無法承擔(dān)大量的并發(fā)操作;
[0015](3)實際成本更高;
[0016](4)發(fā)生故障時,需要切換時間,并不是真正24X7不間斷運行;
[0017](5)擴展性差,每添加一個節(jié)點必須停掉所有的服務(wù)器。
【發(fā)明內(nèi)容】
[0018]有鑒于此,本發(fā)明實施例提出一種具備高可用性的數(shù)據(jù)庫,以實現(xiàn)對應(yīng)提高數(shù)據(jù)庫的可用性。
[0019]本發(fā)明實施例提供了一種具備高可用性的數(shù)據(jù)庫,所述的具備高可用性的數(shù)據(jù)庫包括若干個節(jié)點及共享存儲設(shè)備,所述的共享存儲設(shè)備至少為兩個,所述的至少兩個的共享存儲設(shè)備中一個為主數(shù)據(jù)庫(Primary Database),其余共享存儲設(shè)備為備用數(shù)據(jù)庫(Standby Database)。
[0020]本發(fā)明實施例所提供的具備高可用性的數(shù)據(jù)庫能夠使得數(shù)據(jù)庫系統(tǒng)中多節(jié)點負載均衡,可以用多個廉價PC服務(wù)器代替昂貴的小型機或大型機,節(jié)約硬件及維護成本,具有高擴展性;同時采用了多個共享存儲設(shè)備,當(dāng)主數(shù)據(jù)庫不能正常工作時,可以切換備份數(shù)據(jù)庫進行服務(wù)減少了服務(wù)停止時間,并且數(shù)據(jù)不會丟失。
【附圖說明】
[0021]通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
[0022]圖1是現(xiàn)有技術(shù)所提供的雙機熱備的數(shù)據(jù)庫結(jié)構(gòu)示意圖;
[0023]圖2是本發(fā)明實施例所提供的集群的邏輯結(jié)構(gòu)示意圖;
[0024]圖3是本發(fā)明實施例所提供的集群的物理結(jié)構(gòu)示意圖;
[0025]圖4是本發(fā)明實施例一所提供的具備高可用性的數(shù)據(jù)庫的結(jié)構(gòu)示意圖;
[0026]圖5是本發(fā)明實施例二所提供的具備高可用性的數(shù)據(jù)庫中的主數(shù)據(jù)庫與備用數(shù)據(jù)庫同步方法的流程示意圖;
[0027]圖6是本發(fā)明本發(fā)明實施例二所提供的具備高可用性的數(shù)據(jù)庫中的主數(shù)據(jù)庫與備用數(shù)據(jù)庫同步方法的示意圖。
【具體實施方式】
[0028]下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細說明??梢岳斫獾氖?,此處所描述的具體實施例僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。
[0029]圖2是本發(fā)明實施例一所提供的集群的邏輯結(jié)構(gòu)示意圖;圖3是本發(fā)明實施例一所提供的集群的物理結(jié)構(gòu)示意圖;圖4是本發(fā)明實施例一所提供的具備高可用性的數(shù)據(jù)庫的結(jié)構(gòu)示意圖。
[0030]圖2是本發(fā)明實施例一所提供的集群的邏輯結(jié)構(gòu)示意圖,由圖2可以看出,集群可以由若干個物理計算機組成(每個叫做一個節(jié)點),這些節(jié)點間通過網(wǎng)絡(luò)連接(心跳網(wǎng)絡(luò))。每個節(jié)點上都運行一個實例(Instance),這些實例通過一個特殊的軟件(Clusterware,集群軟件)的協(xié)助,共同操作一個數(shù)據(jù)庫。從外部用戶視角看,他們看到的只是一個數(shù)據(jù)庫。從邏輯上看,集群由存儲層、網(wǎng)絡(luò)層、集群件層、應(yīng)用層4層組成。集群軟件可以采用Oracle RAC,可以支持24x 7有效的數(shù)據(jù)庫應(yīng)用系統(tǒng),在低成本服務(wù)器上構(gòu)建高可用性數(shù)據(jù)庫系統(tǒng),并且自由部署應(yīng)用,無需修改代碼。在Oracle RAC環(huán)境下,Oracle集成提供了集群軟件和存儲管理軟件,為用戶降低了應(yīng)用成本。當(dāng)應(yīng)用規(guī)模需要擴充時,用戶可以按需擴展系統(tǒng),以保證系統(tǒng)的性能。Oracle RAC有以下優(yōu)點:
[0031](I)多節(jié)點負載均衡;
[0032](2)提供高可用:故障容錯和無縫切換功能,將硬件和軟件錯誤造成的影響最小化;
[0033](3)通過并行執(zhí)行技術(shù)提高事務(wù)響應(yīng)時間;
[0034](4)通過橫向擴展提高每秒交易數(shù)和連接數(shù);
[0035](5)節(jié)約硬件成本,可以用多個廉價PC服務(wù)器代替昂貴的小型機或大型機,同時節(jié)約相應(yīng)維護成本;
[0036](6)可擴展性好,可以方便添加刪除節(jié)點,擴展硬件資源。
[0037]圖3是本發(fā)明實施例一所提供的集群的物理結(jié)構(gòu)示意圖,由圖3可以看出RAC集群實際上是實例級別的容災(zāi),但是各個實例在后臺與共享存儲器(SHARE STORAGE)連接,其仍然只使用了一份數(shù)據(jù)文件(DATAFILE),通常這份DATAFILE保存在磁盤陣列這樣的共享存儲器里面,如果由于未知的原因一個節(jié)點出現(xiàn)了錯誤宕機了,這個時候RAC的另外一個節(jié)點會通過INSTANCE RECOVERY的方式構(gòu)建GRID并且訪問宕機節(jié)點的日志文件(L0GFILE