sql >> データベース >  >> RDS >> Oracle

OracleRACの観点から見たSQLServerクラスタリング

    Oracleのデータベースクラスタリングソリューションをよく知っていることは周知の事実です。最近、最初の設計から最終的な実装まで2年かかったSQLServerクラスタリングの高可用性ソリューションを完成させました。そのプロセスには、要件の文書化、オプションの決定、要件の実装の詳細へのマッピング、予算編成、調達、インストール、構成、およびテストが含まれていました。

    プロジェクトが完了したので、OracleRAC担当者の観点からSQLServerのクラスタリングについていくつかの項目を紹介したいと思いました。 SQL ServerとOracleはどちらもRDBMSエンジンであり、いくつかの共通点がある可能性があることは誰もが知っています。しかし、彼らもまた完全に異なる生き物です。したがって、OracleのグリッドインフラストラクチャとRACおよびData Guardに慣れていて、SQL Server HAソリューションの実装を検討している場合は、これが役立つ情報を提供する可能性があります。

    現在の本番システムは、4ノードのOracleRACプライマリデータベースです。これにより、プライマリデータセンター内で高可用性(および高性能)が提供されます。 Data Guardを使用して、REDOを3ノードのRACフィジカル・スタンバイ・データベースに移送します。 SQL Server <> Oracleですが、管理を容易にするために、構成を可能な限り類似させておきたいと思いました。そのため、プライマリサイトに2ノードのSQL Serverフェールオーバークラスターを展開し、DRサイトに1ノードの「スタンバイ」データベースを展開しました。

    さて、順不同で私の観察に移りましょう。

    • SQLServerのHAクラスタリングソリューションはアクティブ/パッシブです。オラクルはアクティブ/アクティブであり、私にとっては「より良い」です。そうです…それは主観的な用語です。アクティブ/パッシブの実装では、2つの物理サーバーがそこにあり、1つは基本的に常にアイドル状態であるという考えは好きではありませんでした。したがって、「優先」ノードである1つの物理サーバーと1つの仮想サーバーがあります。物理サーバーに障害が発生した場合、クラスタリングによってSQL Serverインスタンスが仮想サーバーに自動的にフェイルオーバーされ、再び稼働できるようになります。このアクティブ/パッシブクラスタは、Oracle RACのようにスケーラビリティに対応するようには機能しませんが、プライマリ環境でより高い可用性を提供します。
    • クラスタリングの実装は非常に簡単です。 OSレベルでクラスタリングをオンにします。これは完全にMicrosoftスタックであるため、OSにクラスタリングを組み込みました。それはすでにあなたのためにあります。あなたはそれをオンにする必要があります。次に、[管理ツール] –> [フェールオーバークラスターマネージャー]を起動すると、ウィザードがセットアップをガイドします。グリッドインフラストラクチャをインストールするよりもはるかに簡単です。しかし、オラクルはさまざまなOSプラットフォームと戦わなければならないため、そこでは困難になっています。 Linux上のSQLServer2016がフェールオーバークラスタリングをどのように処理するかを見るのは興味深いでしょう。
    • Oracleはシェアードディスクモデルを使用しますが、SQLServerはシェアードナッシングです。ただし、ディスクは両方のノードで使用可能である必要があるため、ある意味で「共有ディスク」を使用する必要があります。ただし、MSフェールオーバークラスタリング(MSFC)は、クラスター化されたディスクをアクティブノードにマウントします。 SQL Serverが自動または手動で他のノードに移動されると、MSFCは一方のノードでディスクをアンマウントしてからもう一方のノードにマウントします。 Windowsエクスプローラウィンドウを開いて、この移行中にディスクが表示または非表示になるのを見るのはちょっと奇妙です。
    • グリッドインフラストラクチャは、クォーラム操作に投票ディスクを使用します。 MSFCでは、クォーラムディスクを使用したり、ファイル共有を使用したり、クォーラムなしで構成したりできます。後者を使用すると、自動フェイルオーバー機能が妨げられます。
    • プライマリに独自のクラスターがあり、スタンバイに独自のクラスターがあることに慣れています。 SQL Serverでは、プライマリノードとスタンバイノードが同じクラスターの一部である必要があります。ありがたいことに、クラスタはOracleGIとは異なるサブネットをまたぐことができます。スタンバイノードの追加は非常に簡単で、議決権を削除しただけで、スタンバイノードのクォーラムディスクを構成しませんでした。スタンバイへのフェイルオーバーを手動操作にしたいので、これは問題ありませんでした。
    • スタンバイデータベースの場合、データベースミラーリング、ログ配布、またはAlwaysOn可用性グループ(AG)を使用できます。最初の2つは途中であるため、AGを使用しました。 AGでは、スタンバイノードがプライマリと同じクラスタの一部である必要があります。 AGに参加するためのデータベースの設定をガイドするウィザードがあります。これは、Oracleフィジカルスタンバイを設定するよりもはるかに簡単です。
    • Oracleのドキュメントが嫌いな方は、感謝の気持ちを伝えましょう。このプロセス中に何度も、MSのドキュメントに非常に大きな部分が欠けていることに気づきました。たとえば、投票権がないようにスタンバイノードを構成する方法を知りませんでした。幸いなことに、クリックすることができました。

    それがすべて言われ、実行されたとき、SQLServerソリューションを実装することはそれほど難しくありませんでした。時々、クラスタリングの知識に頼らざるを得ませんでした。また、Microsoftの用語が邪魔になることもありました。たとえば、世界の他の地域では「スプリットブレイン」と呼ばれていますが、MSでは「スプリットクラスター」と呼ばれています。レキシコンの違いを克服することが最大のハードルになることもありました。


    1. SQLiteはPRINTF()の名前をFORMAT()に変更します

    2. 設計データベースへの先史時代および現代のアプローチ

    3. ExecuteBatchメソッドは、Javaで値-2の配列を返します

    4. 一般的なER図の間違い