• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于 RAC的數(shù)據(jù)庫故障切換技術(shù)

      2011-04-12 08:31:40蘇冉冉趙玉珍
      關(guān)鍵詞:IP地址客戶端集群

      □張 雷,蘇冉冉,馬 民,趙玉珍

      (1.北京環(huán)球信息應(yīng)用開發(fā)中心,北京 100094;2. 山西廣播電視大學(xué),山西 太原 030027)

      Oracle數(shù)據(jù)庫的高可用性是指Oralce數(shù)據(jù)庫系統(tǒng)能夠持續(xù)不間斷的運行。造成Oracle數(shù)據(jù)庫業(yè)務(wù)系統(tǒng)中斷的原因主要有以下兩種,第一種是由于Oracle數(shù)據(jù)庫服務(wù)器硬件或軟件系統(tǒng)的故障,致使Oracle應(yīng)用服務(wù)器無法正常工作,從而導(dǎo)致業(yè)務(wù)中斷;第二種是由于Oracle數(shù)據(jù)遭到破壞。如數(shù)據(jù)庫故障或數(shù)據(jù)文件損壞,造成數(shù)據(jù)庫無法正常工作,從而導(dǎo)致Oracle系統(tǒng)部分或全部中斷。

      第一種情況,通常只是指Oracle服務(wù)器硬件或是應(yīng)用軟件無法正常工作。在這種情況下如果能夠?qū)⒐收戏?wù)器所承擔(dān)的功能轉(zhuǎn)由其他正常服務(wù)器執(zhí)行,就能夠在最短時間內(nèi)恢復(fù)業(yè)務(wù)系統(tǒng)的運行,發(fā)生這種情況,采用服務(wù)器硬件冗余方案是最有效的解決辦法。

      第二種情況,由于Oracle數(shù)據(jù)已經(jīng)遭到破壞,即使服務(wù)器的硬件和操作系統(tǒng)都正常,仍可能造成數(shù)據(jù)庫服務(wù)器無法正常工作,導(dǎo)致Oracle數(shù)據(jù)庫服務(wù)器無法正常運行。如果發(fā)生這種情況有兩種解決方法。一是將服務(wù)轉(zhuǎn)由本地或異地其他存有業(yè)務(wù)數(shù)據(jù)副本的服務(wù)器接替運行。二是從備份,恢復(fù)系統(tǒng)中恢復(fù)歷史備份的業(yè)務(wù)數(shù)據(jù),從而恢復(fù)服務(wù)器的正常運行。

      下面結(jié)合Oracle10g的特點,針對以上關(guān)鍵故障,給出利用RAC和數(shù)據(jù)備份對業(yè)務(wù)數(shù)據(jù)庫進行容錯設(shè)計的解決方法。

      1. RAC簡介

      Oracle中的真正應(yīng)用群集RAC (Real Application Cluster)是Oracle并行服務(wù)器OPS (Oracle Parallel Server)的最新版本,它要求由兩臺以上數(shù)據(jù)庫服務(wù)器構(gòu)成集群,通過網(wǎng)絡(luò)連接,并且能夠支持集群中所有計算機系統(tǒng)對一組共享磁盤系統(tǒng)的并發(fā)訪問。

      RAC的每個節(jié)點上都運行著一個Oracle實例,所有這些實例都通過共享磁盤系統(tǒng)訪問同一數(shù)據(jù)庫。數(shù)據(jù)庫的重做日志文件和回滾段也位于這個共享磁盤系統(tǒng)上,服務(wù)器之間在保留原有IP的基礎(chǔ)上,分別配置服務(wù)器的信任關(guān)系,用戶在進行服務(wù)器連接時,并不需特意指定某個IP,只要連接虛擬IP,系統(tǒng)將根據(jù)服務(wù)器的是否可用及繁忙程度來自行決定連接其中一臺。這樣,集群服務(wù)器為客戶提供單一系統(tǒng)映像SSI,即把客戶的請求透明地定向到集群內(nèi)部的各個服務(wù)節(jié)點,使用戶看起來整個集群就是一臺獨立的高性能服務(wù)器。集群服務(wù)器中某個服務(wù)器由于故障或計劃停機而無法使用時,集群中其它節(jié)點可以自動承擔(dān)工作負載,對故障節(jié)點進行實例恢復(fù),也就是說一個節(jié)點的故障不會影響集群中的其它節(jié)點,實現(xiàn)透明的故障切換。

      RAC配置可以較好地滿足業(yè)務(wù)管理子系統(tǒng)業(yè)務(wù)數(shù)據(jù)庫的高可用設(shè)計目標(biāo),我們在設(shè)計中采用兩臺HPrx4640同構(gòu)型服務(wù)器,共享一組磁盤陣列,配置成一組以主備方式工作的集群系統(tǒng)。

      2. RAC配置

      RAC是比較復(fù)雜的Oracle選件,在安裝、配置和管理方面都較單機版本要復(fù)雜許多,只有通過合理設(shè)計并配置RAC,才能發(fā)揮透明故障切換的作用。

      ·網(wǎng)絡(luò)配置

      為使兩臺數(shù)據(jù)庫服務(wù)器配置為RAC,每個節(jié)點必須至少擁有兩塊網(wǎng)卡:一塊網(wǎng)卡用于公共網(wǎng)絡(luò)上的客戶程序通信,而另一塊網(wǎng)卡用于專用服務(wù)器間通信。為了使用這種配置,首先必須在每個節(jié)點上配置hosts文件,使之對于公共節(jié)點和專用節(jié)點有唯一的名稱,理論上使用針對公共網(wǎng)絡(luò)和專門節(jié)點容易識別的主機名。盡管在一個擁有兩節(jié)點的系統(tǒng)中可以將專用網(wǎng)絡(luò)用一根交叉線進行連接,但考慮有些平臺操作系統(tǒng)中的介質(zhì)感應(yīng)行為的存在不支持這種做法。例如,在Windows上,一個節(jié)點關(guān)機了,那么存活節(jié)點上用于互連的網(wǎng)卡會被禁用,因為互聯(lián)網(wǎng)絡(luò)上沒有再感應(yīng)的活動。這會導(dǎo)致存活節(jié)點出現(xiàn)錯誤。最好的解決方案是在節(jié)點之間使用一個專用的交換機,這意味著即使一個節(jié)點關(guān)機了,另一個節(jié)點上的網(wǎng)卡仍然存在(來自交換機的)持續(xù)活動。當(dāng)然,這也可以用于多于兩個節(jié)點的系統(tǒng)。

      系統(tǒng)中,兩臺服務(wù)器之間不僅要實現(xiàn)快速故障切換,它們之間本身也會進行工作的協(xié)調(diào)與調(diào)度。因此,我們在兩臺服務(wù)器之間連接一條光纖,既心跳線,通過分別配置雙機信任關(guān)系來實現(xiàn)服務(wù)器間的通信。通過心跳線,系統(tǒng)之間的調(diào)度能夠更加快速地進行。兩臺服務(wù)器彼此通過專用網(wǎng)絡(luò)雖然可以實現(xiàn)通信,但由于客戶端對它的訪問也是通過專用網(wǎng)絡(luò)來進行,這時,如果客戶正在連接服務(wù)器,而其中的一臺已壞掉,正在通過專用網(wǎng)絡(luò)來告知對方并同時進行故障切換,這時不論對于用戶的訪問還是系統(tǒng)之間的故障切換均會花去較多時間。使用光纖連接的心跳線,如果一臺服務(wù)器發(fā)生故障,它會通過心跳線來告知對方,及時進行故障切換,對于用戶來說,他并不關(guān)心它會連接到哪臺服務(wù)器上工作,他在乎的就是速度,因此,進行故障切換并不會太多的影響客戶端的訪問,能極大地提高系統(tǒng)可用性。雙機信任關(guān)系設(shè)置如下:

      #vi /.rhosts

      rx2620a root

      rx2620a oracle

      rx2620a-priv root

      rx2620a-priv oracle

      rx2620a-vip root

      rx2620a-vip oracle

      rx2620b root

      rx2620b oracle

      rx2620b-priv root

      rx2620b-priv oracle

      rx2620b-vip root

      rx2620b-vip oracle

      · 軟件配置

      為了在節(jié)點發(fā)生故障時能夠更快地進行故障切換,我們使用虛擬IP地址。之所以選擇虛擬IP原因是TCP超時。TCP超時對應(yīng)用程序預(yù)期地可用性起了很大的影響。當(dāng)RAC環(huán)境中的某個節(jié)點發(fā)生故障停止服務(wù)時,或者是任何有多個地址可以嘗試的高可用環(huán)境發(fā)生故障時,客戶端是沒有辦法知道的。如果客戶端通過TNS別名來連接,或者是允許連接到多個節(jié)點的服務(wù),客戶端可能會不知情地將首次連接指向一個已經(jīng)停止服務(wù)的節(jié)點。這對單個客戶端本身來說沒有什么問題,因為列表中是假設(shè)有多個地址的。同樣,當(dāng)客戶端從列表中的第一個地址獲得響應(yīng)失敗時,將會嘗試下一個地址,直到連接建立成功。問題是它轉(zhuǎn)到下一個地址的時間??蛻魰却嚅L時間來決定它試圖到達的主機是不可訪問的?這個時間可能為幾秒或幾分鐘等,在有些環(huán)境中這是不可接受的,如果一個節(jié)點停止服務(wù)幾個小時,幾天或者幾周,數(shù)據(jù)庫可那仍然運轉(zhuǎn)正常,有很多個節(jié)點仍然可以訪問數(shù)據(jù)庫。但是,可能有一些客戶端會忙于建立到已停機節(jié)點的初始連接,因此陷入無限期的等待,而在轉(zhuǎn)向列表中下一個地址之前連接已經(jīng)超時了。

      遺憾的是,這個時間的設(shè)置已經(jīng)超出了Oracle的控制范圍了。另外,它還會隨不同的客戶端,不同的操作系統(tǒng)而變化。它由操作系統(tǒng)客戶端的超時值來控制,因此對所有用戶修改可能是很麻煩的,因為可能會需要很多的客戶端和很多配置變更。改變超時的值甚至可能會給客戶端正在運行的其他應(yīng)用程序造成不良的后果,因為其他應(yīng)用程序可能出于某種原因,需要一個較高的TCP超時值。

      更糟糕的是,行為可能會不一致。如果打開了客戶端故障轉(zhuǎn)移,一些連接很可能在他們第一次嘗試時就會成功,因為他們正好隨機地連接到了一個可用的節(jié)點。但是,在其他的情況下,連接的次數(shù)會增加,因為客戶端隨機并無意識地挑選到了停止服務(wù)的節(jié)點作為首次嘗試的節(jié)點。這在客戶端看來結(jié)果是混亂并且失敗的,盡管從數(shù)據(jù)庫的角度來看,任何事情都應(yīng)正常工作。

      輸入虛擬IP地址,通過使用虛擬IP地址,Oracle排除了TCP初始連接超時的問題,而不需要對單個的客戶端做任何改變。這是通過強制客戶連接首先進入到所有連接的虛擬IP地址來實現(xiàn)的。當(dāng)所有的節(jié)點都正常工作時,每一個虛IP都運行在它指定的節(jié)點上,連接被定向到恰當(dāng)?shù)膫陕犉骱头?wù)。當(dāng)發(fā)生意外時,有一個節(jié)點失效,CRS將踢開這個節(jié)點,并且這個節(jié)點的虛IP事實上將聯(lián)機指向集群中另一個正常工作的節(jié)點,在那里虛擬IP仍然可以響應(yīng)ping程序和連接嘗試。更重要的是,要注意這個虛IP現(xiàn)在將不能接受到數(shù)據(jù)庫的連接。但是,由于IP地址是可用的,它將能夠立即響應(yīng)連接嘗試。給客戶端的響應(yīng)將正常地以O(shè)RA-12541的形式,說明沒有可用的偵聽器。這是因為該虛IP現(xiàn)在所在的節(jié)點有它自己的偵聽器,但是它在偵聽它自己的虛IP,而不是其他節(jié)點上的虛IP。客戶端收到?jīng)]有偵聽器的消息后,它將能夠立即使用ADDRESS_LIST中的下一個IP重試,而不用等待我們所想象的2分鐘超時,因此,一個連接時故障切換仍然發(fā)生了,但是連接嘗試在幾秒鐘之內(nèi)就成功了。真正的ORA錯誤被掩蓋了,所以客戶端從來都沒有發(fā)現(xiàn)這個錯誤。這樣,每個節(jié)點上偵聽器實際上偵聽的是虛擬IP地址,客戶程序連接也是針對虛擬IP進行的,一旦節(jié)點發(fā)生故障,虛擬IP地址將進行實際的故障切換,并在另一臺節(jié)點上繼續(xù)保持聯(lián)機。

      使用虛擬IP的目的并非是讓客戶程序能夠使用其他節(jié)點上的虛IP繼續(xù)與數(shù)據(jù)庫保持連接。IP地址故障切換的目的是降低客戶程序意識到某個節(jié)點發(fā)生故障所要花費的時間。如果IP進行故障切換并從其他節(jié)點上進行響應(yīng),那么正在與該虛IP連接的客戶程序會立刻得到一個響應(yīng),只是響應(yīng)的內(nèi)容并不是連接成功,而是登錄失敗,這說明IP是活躍的,但該地址上沒有可用的實例,這時,客戶程序就能夠立刻嘗試地址列表上的其他地址再次進行連接,從而成功地與被賦予故障節(jié)點相同功能的可用節(jié)點的虛IP進行連接。在業(yè)務(wù)管理子系統(tǒng)中,我們使用如下方法配置虛擬IP:

      #xhost +

      #cd /home/oracle/app/oracle/product/10.2.0/crs_1/bin

      #./vipca

      執(zhí)行./vipca運行圖形界面,通過添加雙機信任關(guān)系等來完成虛擬IP的配置。

      在客戶端使用RAC集群服務(wù)器需要完成對監(jiān)聽文件tnsnames.ora的配置,示例如下:

      GRID =

      (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP) (HOST = rmscvip1.us.oracle.com) (PORT=1521) )

      (ADDRESS = (PROTOCOL = TCP) (HOST = rmscvip2.us.oracle.com) (PORT=1521) )

      (LOAD_BALANCE = yes)

      (CONNECT_DATA = (SERVICE_NAME = grid)

      )

      在該項中,地址將會被客戶端隨機嘗試,因為設(shè)置了LOAD_BALANCE項。所以列表中的第一個地址并不總是首先被嘗試的。客戶端會隨機地挑選一個地址來嘗試,而不會考慮節(jié)點的可用性或者節(jié)點的負載量。選擇時隨機的,并且希望通過所有的客戶端都隨機挑選地址進行連接,使得結(jié)果負載的分布更平均一些。

      另一方面,服務(wù)器端故障轉(zhuǎn)移就更加職能化了。它由服務(wù)器參數(shù)文件中的REMOTE_LISTENER參數(shù)來控制。在每個服務(wù)器節(jié)點中,系統(tǒng)參數(shù)文件中的參數(shù)REMOTE_LISTENER應(yīng)該指向一個TNSNAMES項,它反過來會列出集群中所有可用偵聽器的IP和端口,如下所示:LISTENERS_GRID =

      (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP) (HOST = rmscvip1.us.oracle.com) (PORT=1521) )

      (ADDRESS = (PROTOCOL = TCP) (HOST = rmscvip2.us.oracle.com) (PORT=1521) )

      )

      系統(tǒng)參數(shù)文件中的REMOTE_LISTENER參數(shù)也設(shè)置為LISTENERS_GRID。*.remote_listener = 'LISTENERS_GRID'

      同樣,任何來到節(jié)點的連接都可能被偵聽器重定向到其他的節(jié)點,而不需要客戶端做任何特殊的配置。因為故障轉(zhuǎn)移時在服務(wù)器上完成的,偵聽器可以考慮單個節(jié)點的負載,并將新的連接定向到那些負載較輕的節(jié)點。客戶端故障轉(zhuǎn)移將不會與這個過程相沖突。如果REMOTE_LISTENER采用上面的定義,并和客戶端故障轉(zhuǎn)移結(jié)合在一起,客戶端將首先隨機地從客戶端tnsnames.ora文件中挑選一個地址來連接。在做了這個選擇之后,通信就通過服務(wù)器地址上的那個偵聽器啟動,偵聽器然后就會檢查負載并決定是接受連接還是將它重定向另外一個負載最輕的節(jié)點。

      對于現(xiàn)代數(shù)據(jù)管理子系統(tǒng),配制Oracle 10g RAC實現(xiàn)快速備份與恢復(fù)技術(shù),保證在一個集群內(nèi)單節(jié)點故障不影響集群內(nèi)其它節(jié)點的運行,將導(dǎo)致意外和計劃停機時間的所有可能降到最低或完全消除。

      參考文獻:

      [1]蕭文龍,陳怡如.Oracle 10g 數(shù)據(jù)庫入門與實踐[M].北京:清華大學(xué)出版社,2006.

      [2]林曉東,劉心松.高可用性系統(tǒng)結(jié)構(gòu)的研究[J].計算機應(yīng)用,1997,(7).

      [3]Buyya R.鄭緯民,石 威等譯.高性能集群計算:結(jié)構(gòu)與系統(tǒng)(第一卷)[M].北京:北京電子工業(yè)出版社,2001.

      猜你喜歡
      IP地址客戶端集群
      鐵路遠動系統(tǒng)幾種組網(wǎng)方式IP地址的申請和設(shè)置
      海上小型無人機集群的反制裝備需求與應(yīng)對之策研究
      一種無人機集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計
      電子制作(2018年11期)2018-08-04 03:25:40
      縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
      傳媒評論(2018年4期)2018-06-27 08:20:24
      孵化垂直頻道:新聞客戶端新策略
      傳媒評論(2018年4期)2018-06-27 08:20:16
      基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
      電子測試(2018年10期)2018-06-26 05:53:34
      Python與Spark集群在收費數(shù)據(jù)分析中的應(yīng)用
      基于SNMP的IP地址管理系統(tǒng)開發(fā)與應(yīng)用
      黑龍江電力(2017年1期)2017-05-17 04:25:16
      勤快又呆萌的集群機器人
      客戶端空間數(shù)據(jù)緩存策略
      谢通门县| 镇平县| 安吉县| 确山县| 刚察县| 马关县| 扬州市| 绥江县| 建阳市| 安康市| 锡林浩特市| 盐山县| 长丰县| 恩平市| 云龙县| 浦东新区| 团风县| 荆州市| 天柱县| 乌鲁木齐市| 江阴市| 江山市| 忻城县| 桑植县| 玛曲县| 塔城市| 耿马| 博野县| 固安县| 嘉定区| 运城市| 大洼县| 平泉县| 长白| 镇远县| 新疆| 龙南县| 高邮市| 新野县| 旬阳县| 太保市|