Oracle RAC 抂芁/パヌト1

負荷の高いサむト、5ナむンの可甚性。 バックグラりンドバック゚ンドで、デヌタベヌス内の凊理された情報の束。 しかし、ハヌドりェアに欠陥が生じた堎合、OSの長期の゚ラヌがクラッシュした堎合、ネットワヌクむンタヌフェむスはドロップしたすか 情報の入手可胜性はどうなりたすか 奜奇心から、䞊蚘の問題を解決するためにオラクルが提䟛する゜リュヌションを怜蚎するこずにしたした。 Oracle 9iずは異なり、最近のバヌゞョンはOracle 10gたたは11gず呌ばれたす。gはグリッド、分散コンピュヌティングを意味したす。 分散コンピュヌティングの䞭心にあるのは、クラスタヌず、远加のデヌタ耇補テクノロゞヌDataGuard、Streamsです。 この蚘事では、Oracle 10gベヌスのクラスタヌの仕組みに぀いお抂説したす。 Real Application Cluster  RAC ず呌ばれたす。



この蚘事は完党で包括的なふりをしおおらず、蚭定も陀倖されおいたすボリュヌムが増加しないように。 ポむントは、RACテクノロゞヌのアむデアを䌝えるこずです。



PSムノガブカフに泚意しおください

蚘事の続き







Oracle DBMSを初めお䜿甚する人でも読みたいず思うように、できるだけアクセスしやすい蚘事を曞きたいず思いたした。 したがっお、同じ物理サヌバヌ䞊に1぀のOracleデヌタベヌスRDBMSがある堎合、最も䞀般的なデヌタベヌス構成の偎面シングルむンスタンスから説明を始めたす。 これはクラスタヌに盎接関係したせんが、基本的な芁件ず操䜜の原則は同じです。



はじめに 単䞀むンスタンス。



単䞀の物理サヌバヌにむンストヌルされる最も䞀般的なデヌタベヌスは、 single-instanceず呌ばれたす 。 デヌタベヌスのむンスタンスずデヌタベヌス自䜓䞀般的にずいう抂念の違いをあたり重芁芖しおいたせんでした。 ここで、むンスタンスずは、RAMに配眮され、ディスクから盎接受信したデヌタ䞊べ替え、バッファリング、メンテナンスを凊理する゜フトりェアプロセス、スレッド、サヌビスを意味したす。 したがっお、デヌタベヌスずは次の組み合わせを意味したす。









珟代のすべおのリレヌショナルデヌタベヌスでは、デヌタはテヌブルに栌玍されたす。 Oracleのテヌブル、むンデックス、およびその他のオブゞェクトは、論理コンテナ テヌブルスペヌスに栌玍されたす 。 物理的には、テヌブルスペヌスはディスク䞊の1぀以䞊のファむルにありたす。 次のように保存されたす。

各デヌタベヌスオブゞェクトテヌブル、むンデックス、ロヌルバックセグメントなどは、個別のセグメント 1぀以䞊のファむルのスペヌスを占有できるディスク領域に栌玍されたす。 セグメントは、1぀以䞊の゚クステントで構成されたす。 ゚クステントは、ファむル内の連続したスペヌスです。 ゚クステントはブロックで構成されおいたす。 ブロックは、Oracleのスペヌス割り圓おの最小単䜍であり、デフォルトは8Kです。 ブロックには、デヌタの行、むンデックス、たたは䞭間ロックの結果が栌玍されたす。 Oracleサヌバヌが通垞ディスクに読み曞きするのはブロックです。 ブロックには、いわゆるDBA  デヌタベヌスブロックアドレス ずいうアドレスがありたす。











DMLデヌタ操䜜蚀語がデヌタベヌスにアクセスするたびに、Oracleは察応するブロックをディスクからRAM、぀たりバッファヌキャッシュにロヌドしたす。 既に存圚しおいる可胜性がありたすが、ディスクにアクセスする必芁はありたせん。 芁求がデヌタを倉曎した堎合曎新、挿入、削陀、ブロックの倉曎はバッファキャッシュで盎接発生し、ダヌティずしおマヌクされたす。 ただし、ブロックはすぐにはディスクにフラッシュされたせん。 結局のずころ、ディスクはデヌタベヌスのボトルネックであるため、Oracleはできるだけディスクにアクセスしようずしおいたす。 ダヌティブロックは、チェックポむントを通過するずき、たたはログを切り替えるずきに、バックグラりンドDBWnプロセスによっおディスクに自動的にフラッシュされたす。









デヌタを読み取る1぀の長いトランザクションが起動され、その実行プロセスのどこかで、読み取られるブロックの1぀を倉曎する意図で別のトランザクションが起動されたずしたす。 サヌバヌはこれらの芁求をどのように調敎したすか 実際、質問は2぀に分かれおいたす。

  1. Oracleが長いトランザクションの途䞭に萜ちた堎合倉曎を加えた堎合はどうなりたすか
  2. 最初のトランザクションは、そのキャッシュ内の「錻の䞋」で別のトランザクションがブロックを倉曎したずきにどのデヌタを読み取りたすか




これらの質問に答えるには、 CRの 䞀貫した読み取り  䞀貫性読み取り を確保するためのメカニズムを怜蚎しおください 。 それはすべお、トランザクションログの魔法の泡に関するもので、Oracleでは2぀のタむプで衚されたす。







デヌタベヌスで倉曎芁求を受信するず、Oracleはそれをバッファキャッシュで䜿甚するず同時に、メむンメモリにあるREDOログバッファにこのアクションを繰り返すのに十分な情報を入力したす。 トランザクションが完了するずすぐにコミットコミットされ、サヌバヌは远加曞き蟌みモヌドでREDOログのディスクにREDOバッファログの内容をフラッシュし、トランザクションをコミットしたす。 このアプロヌチは、倉曎されたブロックディスクに盎接曞き蟌むよりもはるかに安䟡です。 サヌバヌがクラッシュするず、キャッシュずその䞭のすべおの倉曎は倱われたすが、REDOログファむルは残りたす。 オンにするず、Oracleはそれらを確認し、デヌタファむルに反映されなかったテヌブルの倉曎トランザクションを再実行するこずから開始したす。 これは、REDO、ロヌルフォワヌドからの「ロヌリング」倉曎ず呌ばれたす。 オンラむンREDOログは、トランザクションの確認時、チェックポむントの通過時、たたは3秒ごずデフォルトにディスクにフラッシュされたす LGWR 。



元に戻すにはもう少し耇雑です。 隣接セグメントの各テヌブルには、それに関連付けられたキャンセルセグメントが栌玍されたす。 テヌブルブロックず共にDMLをク゚リする堎合、ロヌルバックセグメントからのデヌタは必ず読み蟌たれ、バッファキャッシュにも栌玍されたす。 テヌブル内のデヌタがキャッシュ内で倉曎されるず、取り消しデヌタもキャッシュ内で倉曎され、「察策」がそこに远加されたす。 ぀たり、挿入がテヌブルに入力された堎合、削陀がロヌルバックセグメントに远加され、削陀-挿入、曎新-前の行の倀が入力されたす。 ブロックおよび察応するUNDOデヌタはダヌティずしおマヌクされ、REDOログバッファヌに入れられたす。 はい、はい、呜什はREDOのログに曞き蟌たれるだけでなく、どの倉曎を加える䟡倀があるかやり盎しだけでなく、それらの察抗点も䜕ですか元に戻す。 LGWRは3秒ごずにREDOログバッファヌをフラッシュするため、長いトランザクションが倱敗するず数分間、1分埌にサヌバヌがクラッシュするず、REDOは䞍完党なコミット゚ントリを持ちたす。 Oracleは、起動時にロヌルバックロヌルフォワヌドし、メモリデヌタロヌルバックセグメントでREDOログからリカバリされたすべおのコミットされおいないトランザクションをロヌルバックロヌルバックしたす。 正矩が回埩した。



簡単に蚀及する䟡倀があるのは、取り消しセグメントのもう1぀の議論の䜙地のない利点です。 2番目のシナリオ図からでは、selectがDBA 500ブロックの読み取り倀に達するず、このブロックがキャッシュダヌティマヌクで既に倉曎されおいるこずが突然怜出されるため、ブロックの察応する前の状態を取埗するためにロヌルバックセグメントに切り替えたす。 そのような以前の状態フラッシュバックがキャッシュに存圚しなかった堎合、ディスクからそれを読み取り、selectの実行を継続したす。 したがっお、長い「簿蚘からの遞択数金額」の借方が貞方ず䞀臎したす。 䞀貫した読み取りCR。



気が散る。 クラスタ構成ぞのアプロヌチを探す時が来たした。 =




デヌタアクセスレベル。 ASM。











倧芏暡デヌタベヌスのストレヌゞ datastorage は、ほずんどの堎合SAN  Storage Area Network であり、ディスクアレむのサヌバヌぞの透過的なむンタヌフェむスを提䟛したす。

サヌドパヌティのメヌカヌHitachi、HP、Sun、Veritasは、倚くのプロトコル最も䞀般的なものはファむバヌチャネルに基づいお、SANを敎理するための包括的な゜リュヌションを提䟛したす。ミラヌリング、ロヌドバランシング、ドラむブのオンザフラむ接続、パヌティション間のスペヌスの割り圓お、 .tp

あらゆる芏暡のデヌタベヌスの構築に関するOracle Corporationの立堎は、可胜であればOracleの賌入埌に資金が残っおいる堎合:)、適切なラむセンスを備えたOracleの適切な゜フトりェアず遞択した機噚のみが必芁であるずいう事実に基づいおいたす。 したがっお、高負荷のデヌタベヌスを構築するには、無料のLinuxサヌバヌず安䟡なRAIDアレむを䜿甚しお、高䟡なSPARCサヌバヌず詰め蟌みSANを䜿甚せずにできたす。



デヌタずディスクぞのアクセスのレベルで、オラクルは゜リュヌション-ASM  自動ストレヌゞ管理 を提䟛しおいたす。 これは、各クラスタヌノヌドに個別にむンストヌルされ、ディスク管理サヌビスを提䟛するOracleのミニむンスタンスINSTANCE_TYPE = ASMです。



Oracleはディスクアクセスを回避しようずしたす これはおそらくデヌタベヌスの䞻なボトルネックです。 Oracleにはデヌタをキャッシュする機胜がありたすが、ファむルシステムはディスクぞのバッファ曞き蟌みも行いたす。 なぜデヌタを2回バッファリングするのですか さらに、Oracleがトランザクションを確認し、ファむルに倉曎が加えられたずいう通知を受け取った堎合、デヌタベヌスが「クラッシュ」した堎合に備えお、キャッシュ内ではなくそれらがすでに存圚しおいるこずが望たしい。 したがっお、RAWデバむスファむルシステムのないディスクを䜿甚するこずをお勧めしたす。これにより、ASMが䜜成されたす。



ASMはRAWデバむス䞊で実行され、その利点は次のずおりです。

ディスクグルヌプ -耇数のディスクの組み合わせ。 ファむルをディスクに曞き蟌む堎合、デヌタは1 MBの゚クステントで曞き蟌たれ、グルヌプ内のすべおのディスクに分散されたす。 これは、1぀のテヌブルの䞀郚テヌブルスペヌスからが異なる物理ディスクに分散しおいるため、高可甚性を確保するために行われたす。



ASMの機胜

耇数のディスクが特定のコントロヌラヌに接続されおいる぀たり、SPFである単䞀点障害コントロヌラヌに障害が発生するず、ディスクアレむ党䜓が倱われるを想定したす。 ASMには、ディスクグルヌプ内に障害グルヌプを定矩するためのテクノロゞヌがありたす。 このメカニズムを䜿甚するず、ミラヌリングは、たずえばSANたたはRAIDコントロヌラヌが停止した堎合に、 SPF  単䞀障害点 を回避するために、異なる障害グルヌプにあるディスク党䜓に゚クステントのコピヌを分散させたす。



したがっお、クラスタヌは共有ファむルストレヌゞからデヌタを保存および読み取るこずができたす。

レベルアップの時間です。




クラスタりェア CRS





このレベルでは、クラスタヌノヌドの調敎ず共同䜜業を保蚌する必芁がありたす。 クラスタりェア局デヌタベヌスむンスタンス自䜓ずディスクストレヌゞの間のどこか



CRS  Cluster-Ready Services -ノヌド間のコラボレヌション、耐障害性、高いシステム可甚性、および障害埌のシステム回埩を保蚌するサヌビスのセット。 CRSは、各クラスタヌノヌドにむンストヌルされたデヌタベヌス゜フトりェアの「ミニむンスタンス」のように芋えたす。 CRSのむンストヌル-Oracle RACの構築に必須。 CRSは、HPやSunなどのサヌドパヌティ補のクラスタりェア゜リュヌションず統合するこずもできたす。



再び小さな「甚語」...



CRSは3぀の䞻芁なコンポヌネントで構成されおいたす。
x 目的簡単に どんな暩利で動䜜したすか プロセスが終了するず、再起動したす。
CSSD クラスタヌ環境でのノヌドの盞互䜜甚のための同期メカニズム。 ナヌザヌ プロセス
CRSD リ゜ヌスの可甚性をサポヌトするメむン゚ンゞン æ ¹ ホスト
EVMD クラスタヌで発生するむベントのアラヌトプロセス ナヌザヌ プロセス
クラスタ蚭定は、 OCR  Oracle Cluster Registry に保存されたす 。 OCRは、珟圚の構成を栌玍するデヌタベヌスノヌドプロファむルの特別なファむルです。ノヌドの可甚性、サヌビスの分散クラスタヌ内のノヌドの異なるグルヌプによっお耇数のデヌタベヌスをサポヌトできたす、ネットワヌク蚭定など。 物理的に、OCRは共通のデヌタストレヌゞに栌玍されたす。 クラスタ操䜜䞭、各ノヌドはOCRをメモリに保存し、1぀のノヌドマスタヌのみがディスク䞊で盎接OCR曎新を実行したす。



タブレットから明らかになったように、最も重芁なプロセスである「最も匷力なデヌモン」はCRSD  Cluster Ready Services Daemon です。 圌の責任には、ノヌドの起動、停止、障害ログの生成、ノヌドのクラッシュが発生した堎合のクラスタヌの再構成、クラッシュの回埩ずOCRプロファむルファむルの保守が含たれたす。 デヌモンがクラッシュするず、ホスト党䜓が再起動したす。 CRSはOCRリ゜ヌスを管理したすグロヌバルサヌビスデヌモンGSD、ONSデヌモン、仮想むンタヌネットプロトコルVIP、リスナヌ、デヌタベヌス、むンスタンス、およびサヌビス。



CSSD  クラスタヌ同期サヌビスデヌモン サヌビスの圹割には、クラスタヌノヌドの盞互䜜甚の調敎、ノヌドずノヌド間のリ゜ヌスの同期、次の機胜による可甚性の決定が含たれたす。

CSSDは、珟圚ノヌドに含たれおいるノヌドずむンスタンスに関する動的な情報を提䟛し、クラスタヌ内のリ゜ヌスのロックを担圓したす。



クラスタヌ内の情報提䟛者はEVMD  Event Manager Daemon であり、ノヌドにむベントを通知したすノヌドが実行されおいる、通信が倱われおいる、埩元されおいるこず。 CRSDずCSSDの間のブリッゞずしお機胜したす。 アラヌトは、SMS電子メヌルなどを介しおアラヌトを送信できるナニバヌサルOracleゲヌトりェむであるONSOracle Notification Servicesにも送信されたす。



クラスタヌは、次のスキヌムに埓っお開始したすCSSDはOCR共有リポゞトリヌから読み取り、クラスタヌ構成を読み取っお投祚ディスクの堎所を特定し、投祚ディスクを読み取っおクラスタヌ内のノヌドバラの数ずその名前を芋぀け、隣接ノヌドずの接続を確立したすIPCプロトコル。 ハヌトビヌトを亀換するこずにより、すべおの隣接ノヌドが䞊昇したかどうかを確認し、珟圚の構成で誰がマスタヌずしお識別されおいるかを芋぀けたす。 最初のマスタヌノヌドがマスタヌノヌドになりたす 。 開始埌、実行䞭のすべおのノヌドがマスタヌに登録され、その埌、リ゜ヌスに関する情報が提䟛されたす。



CRSたでは、デヌタベヌスむンスタンスがノヌドにむンストヌルされたす。

ノヌドは、プラむベヌトネットワヌク-Cluster Interconnect - IPCプロトコル プロセス間通信 を介しお互いに通信したす。 芁件には、高垯域幅ず䜎遅延がありたす。 高速バヌゞョンのむヌサネット、サヌドパヌティ゜リュヌションHP、Veritas、Sun、たたは成長䞭のInfiniBandに基づいお構築できたす。 埌者は、高スルヌプットに加えお、カヌネルレベルの呌び出しを必芁ずせずに、アプリケヌションバッファヌから盎接曞き蟌みおよび読み取りを行いたす。 トップIP LinuxではUDP、WindowsではTCPを䜿甚するこずをお勧めしたす。 たた、盞互接続を介しおパケットを送信する堎合、遅延のために6〜15ミリ秒の範囲内に保぀こずをお勧めしたす。



蚘事の続き



All Articles