この記事では、Oracle に関する関連知識を提供します。主に RAC 関連の問題を紹介します。Oracle Real Application Cluster は、クラスタ環境でマルチマシン共有データベースを実現し、アプリケーションの高可用性を確保するために使用されます。皆様のお役に立てれば幸いです。
推奨チュートリアル: 「Oracle チュートリアル 」
ビジネス量の増加に対処するには、通常 2 つの一般的な方向性があります。 1 つは 1 台のサーバーの CPU 演算能力、メモリ容量、ディスク容量などを増やす垂直方向の拡張であり、もう 1 つはサーバーの数を増やすことで処理能力を高める水平方向の拡張です。前者は業務の中断や拡張の限界など多くの問題があり、特にインターネットサービスの急速な発展に伴い、単一のサーバーでは業務負荷を満たすのが困難なため、現在は水平拡張が主流となっています。
Oracle Real Application Cluster (RAC、リアルタイム アプリケーション クラスタ) は、クラスタ環境でマルチマシン共有データベースを実現し、アプリケーションの高可用性を確保すると同時に、自動的に並列処理と負荷分散を実現し、フォールトトレランスと障害時のデータベースのブレークポイントフリーリカバリを実現します。ネットワークコンピューティング環境をサポートするOracleデータベースの中核技術です。
このアーキテクチャでは、クラスター内の複数のノードが同じデータベース インスタンスを実行し、どこに存在してもデータは完全に一貫しています。ユーザーはノードアクセスから開始し、取得されるデータは同じです。下図はOracle RACの概略図で、3つのノードでクラスタを構成し、データを共有しています。
RAC の特徴は次のように要約できます:
データの読み取りと書き込みはソフトウェアによって制御されます。
#Oracle RAC と単一データベース サーバーの違い
次に示すように、主な違いは RAC であることです。はクラスタ化されたデータベースであり、クラスタ ソフトウェアによって管理されます。
Oracle RAC ハードウェア アーキテクチャ
クラスタ全体の可用性を確保するために、Oracle RAC には展開中にハードウェアに関する多くの要件があります。ネットワーク・レベルでは、Oracle RAC には、外部アクセス・ネットワーク、内部プライベート・ネットワーク、ストレージ・ネットワークという合計 3 つのネットワーク システムがあります。
ネットワークへの外部アクセスについては、これ以上言うまでもなく、誰もが理解していると思います。内部プライベート ネットワークは、主に、データ送信、ハートビート、クラスター管理など、Oracle クラスターの内部使用に使用されます。ネットワークのこの部分では、リンク障害によってクラスターの異常が発生しないように、展開中にデュアル スイッチとデュアル物理リンクが必要です。背後にはストレージ ネットワークがあり、RAC クラスタがストレージ リソースにアクセスするために使用します。この部分もリンク冗長です。
別の例は、2 ノード RAC システムである次の図です。ホストからスイッチまで冗長性が実装されていることがわかります。どのデバイスに障害が発生しても、ビジネスには影響しません。共有ストレージには RAID 冗長性が備わっています。
Oracle RAC ソフトウェア アーキテクチャ
###以下に示すように、これは 2 ノードの RAC システムであり、データベース ソフトウェアとして Oracle RDBMS、クラスタ ソフトウェアとして Oracle Clusterware が使用されます。ドライバーは主にネットワークカード、HBAカード、ASMLibなどです。 ###各ノードは同じオペレーティング システムを使用し、パッチ番号などを含むバージョンが一貫している必要があります。たとえば、オペレーティング システム: RHEL AS 4.8 64 ビット、Linux カーネル バージョン: 2.6.9-89.EL。
Oracle RAC をより深く理解するために、内部ソフトウェア モジュールの構成を見てみましょう。データベース全体のレベルでは大きな違いはありませんが、主な追加点は、仮想 IP (VIP)、ASM、クラスターウェア、クォーラム ディスクです。これらの新しいコンポーネントは連携して動作し、Oracle のマルチアクティブ クラスタ機能を完成させます。
仮想 IP は、アプリケーションがデータベースにアクセスするための入り口です。この IP はどのサーバーにもバインドされていませんが、クラスター内のどのサーバー間でも移動できます。この機能により、サーバーのクラッシュが発生した場合、データベース クラスターは同じインターフェイスを通じてサービスを外部に提供できるようになります。
ASM と Clusterware はクラスタ管理機能を実装します。ASM はディスクの同時アクセスによるデータ不整合のリスクを回避するためにディスク管理を実装し、Clusterware は Oracle クラスタのソフトウェア プロセスとリソース スケジューリングの管理に使用されます。 。
クォーラム ディスクは、クラスター内のサーバーの異常を判断するために使用されます。クラスター内のノードは、クォーラム ディスクの特定の領域のデータを定期的に更新することで、自身の正常性状態をマークします。他のノードは、このデータに基づいてノードがダウンしているかどうかを判断できます。
次の図は Oracle RAC の論理構造であり、内部の各コンポーネントを順番に紹介します。
各ノードは共有格納データにアクセスするための同等の権限を持ち、Oracle RAC は複数のノードに対して分散ロック管理 (DLM) を使用して同時アクセスを制御します。分散ロック マネージャーは、ノード間の共有リソースの競合を調整する役割を果たします。ノードがデータにアクセスするときは、まず DLM を通じて適用し、他のノードと競合しないことを確認してから使用する必要があります。
Amnesia: 各ノードにクラスター構成情報のコピーがある場合、構成変更後に同期がないとエラーが発生します。
したがって、クラスターはすべてのノードで共有される構成情報を 1 つだけ持つことができます。 Oracle RAC は、OCR ディスク ファイルを使用して健忘症を解決します。
OCR ディスクはマスター ノードによってのみ変更できます。各ノードは OCR キャッシュ メモリにコピーを持っています。ノードが OCR ディスクを変更する場合は、マスター ノードを要求し、このノード上の OCR プロセスがローカルおよび他のノードの OCR キャッシュの内容を更新します。 OCR ディスクは数時間ごとに定期的にバックアップされます。
スプリット ブレイン: クラスター内のノードはハートビート検出を使用して、相手が正常かどうかを確認します。ハートビートに問題がある場合、両方のノードが次のように判断します。相手が間違っていると判断すると、排他的なデータが必要となり、データの整合性が崩れてしまいます。
投票ディスクはノード間のメンバーのステータスを記録するために使用されます。スプリット ブレインが発生すると、投票数が最も多いノードが選択されて制御を獲得し、他のノードは追い出されます。
IO 分離: キックアウトされたノードはデータにアクセスできなくなるため、IO 分離が必要です。 Oracle RAC のメカニズムは、障害が発生したノードを再起動することです。
データベース ファイルは共有され、Cache Fusion Lock はクラスタ レベル外でのストレージ共有と同時アクセス制御を解決します。
1.パブリック ネットワーク: パブリック IP を使用して、外部データ クエリ、データベース メンテナンス、およびサーバー メンテナンスを提供します。
2.仮想ネットワーク: 仮想 IP を使用してアプリケーション接続を提供し、アプリケーションはこの IP を使用します。
TCP/IP プロトコルでは、TCP ヘッダーには送信元ポートと宛先ポートが含まれ、IP ヘッダーには送信元 IP と宛先 IP が含まれ、アプリケーション層データベース モニターは IP とポートを記録します。 、データベースまたはモニターに問題があることがわかっています。 TCP/IP プロトコル スタックのタイムアウトは OS によって決定され、OS ごとに定義が異なります。エラーを検出する時間を短縮するために、Oracle RAC は VIP を使用します。仮想 IP はフローティングであり、物理ネットワーク カードにバインドされていません。ノードに障害が発生すると、VIP は正常なノードに移動されます。ただし、正常なノードの監視で VIP が見つかりません。アプリケーションは問題をすぐに検出します。をクリックして、「他の VIP が接続リクエストを送信する」に切り替えます。
3.プライベート ネットワーク: 高速性が必要な RAC ハートビート検出とキャッシュ フュージョン ロックにはプライベート IP を使用します。
4. ストレージ ネットワーク: ストレージ デバイス、HBA カード、FC ネットワークで構成されます。
単一マシンでは、OS のみが上位層のリクエストを処理できますが、複数のマシンがある場合、クラスタ管理ソフトウェア Oracle Clusterware は、マシンが実行される前に他のノードへのリクエストをインターセプトします。 OS カーネル、その他 ノードのクラスタウェア通信によりリクエストが完了します。
アプリケーション層は複数の CRS リソースで構成され、各リソースは複数のプロセスで構成される完全なサービスです。 LMON(ロックモニター)はCRSリソースを監視し、異常発生時に再起動・切り替えを行うことでOracle RACサービスの高可用性を確保します。
キャッシュ フュージョンは文字通り理解できます。実際、キャッシュ フュージョンは各ノードのキャッシュを均一に管理し、読み取りのたびにディスクを操作する必要を回避し、高速化することです。 IOパフォーマンス。プライベート ネットワークは非常に高速であるため、ディスクの読み取りよりも高速です。さまざまな場所からデータ ブロックを読み取る時間:
Cache Fusion は GCS (グローバル キャッシュ サービス) を通じて管理され、キャッシュを 1 つの大きなキャッシュとして扱います。
#読み取りキャッシュ プロセス##書き込みキャッシュ プロセス
##書き込みディスク プロセス
#ロード バランシングユーザーが RAC に対してさまざまなリクエストを開始すると、ロード バランシングはタスクをさまざまなマシンに割り当てます。
複数のマシンからランダムに選択されたものですか?いいえ! RAC は各マシンのステータスに基づいてタスクを動的に割り当てます。データベースの実行中に、PMON バックグラウンド プロセス ノードの負荷情報がリスナーに登録され、1 ~ 10 分ごとに更新されます。各ノードのリスナーは、すべてのノードの負荷ステータスを認識し、最もビジーなノードにクライアント要求を送信します。
ユーザーによる割り当てには、Cache Fusion が忙しくなる可能性があるという欠点があります。 RAC ノードのデータは共有されるため、全員が Cache Fusion を介してデータを同期します。RAC のパフォーマンスは Cache Fusion のパフォーマンスによって大きく制限されます。高価な InfiniBand を使用するなどプライベート ネットワークをより強力にするか、もう 1 つはキャッシュ フュージョンのトラフィックを削減し、実際にノード インスタンス間の依存関係を減らすことです。ユーザーに応じた割り当てのメカニズムは、その後の解決策に役立ちません。
3 種類のクラスター
負荷分散クラスター: 特定のアルゴリズムに従ってリクエストをさまざまなメンバーに割り当てます;ハイ パフォーマンス クラスター (HPC、ハイ パフォーマンス クラスター) : Tianhe Computer など、強力なコンピューティング性能と非常に高価な、ベクトル プロセッサなどの特殊なソフトウェアとハードウェアで構成される素晴らしいマシンを採用;通常、そのうちの 1 台がアイドル状態でスタンバイ状態になっています。動作中の 1 台に障害が発生した場合、 、彼に交代交代をさせます。
デュアルマシンの相互バックアップ
通常、両方のマシンが独自の作業を行いますが、一方のマシンがハングアップすると、もう一方のマシンも停止してしまうため、一部のリソースを予約する必要があります。失敗するのは二人の仕事です。
2台二重化
例: 社長と次兄が一緒にお店をオープンしており、通常は社長が主に販売を行っています。肉まん、二代目親分が肉まんを販売 二代目は主に豆乳を販売 長兄が困ったら二代目が肉まんと豆乳を販売 二代目が失敗したら長兄が肉まんを販売再びパンと豆乳。
Baozi Soy Milk is data. お互いをケアすることをハートビート検出と呼び、お互いの作業を引き継ぐことをフェイルオーバーと呼びます。 2人の兄弟が突然目が見えなくなり、耳が聞こえなくなり、もう一方が今仕事をしているかどうか分からず、お互いがもう一方の仕事を引き継がなければならないと考える場合、これをスプリットブレインと呼び、その後、父親などの第三者が介入します。問題を解決するには、が必要です。これは投票と呼ばれます。または、2 人の妻に来て、そのうちの 1 人を連れ去るように依頼します。これは IO 分離と呼ばれます。 Oracle RAC はこのカテゴリに属し、最高のパフォーマンスと最も複雑なシステムを備えています。
推奨チュートリアル: 「Oracle 学習チュートリアル 」
以上がOracleクラシックスキルRACの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。