web-dev-qa-db-ja.com

クラスタリングvsトランザクションレプリケーションvs可用性グループ

1つのサーバーマシンに障害が発生した場合でも、データベースバックエンドがSQL Server 2012に依存しているアプリケーションが24時間体制で利用できることを確認する必要があると仮定します。

DBAではなく開発者として、フェイルオーバー/高可用性にどのシナリオをいつ使用するかを理解するのに苦労しています。

  • Windowsフェールオーバークラスター内の2つ(またはそれ以上)のサーバー、クラスター化されたインスタンスとしてのSQL Server
  • トランザクションレプリケーションで最新の状態に保たれている2つ(またはそれ以上)のSQL Serverインスタンス
  • 同期コミットモードで構成されたSQL Server可用性グループ内の2つ(またはそれ以上)のSQL Server

これらのシナリオのどれがどのような種類のワークロードで機能し、これらのシナリオでどのような種類の障害/停止を処理できますか?それらは比較可能/交換可能ですか?

48
marc_s

高可用性ソリューションを常に視覚化する方法は次のとおりです。

SQL Serverフェールオーバークラスターインスタンス(FCI)

高可用性とは何ですか?インスタンス全体。これには、すべてのサーバーオブジェクト(ログイン、SQL Serverエージェントジョブなど)が含まれます。これには、データベースとそれらを含むエンティティも含まれます。これは、この特定のソリューションでの封じ込めのレベルになるため、高可用性SQL Serverインスタンスに最適なソリューションです。

レポートについてはどうですか?なし、NULL、存在しません。フェイルオーバークラスターインスタンスには、インスタンスやVNNなどを含むクラスターグループを配信するアクティブノードがあり、他のすべてのノードは(現在のクラスターグループに関する限り)アイドル状態であり、フェイルオーバーを待機しています。

フェイルオーバーが発生するとどうなりますか?FCIのダウンタイムは、パッシブノードがクラスターリソースを取得するのにかかる時間によって決まりますSQL Serverインスタンスを実行状態にします。これは通常、時間は最小限です。

クライアントの抽象化はありますか?はい、これは、フェールオーバークラスターインスタンスの仮想ネットワーク名で本来組み込まれます。これは常に、現在SQL Serverクラスターリソースを提供しているアクティブノードを指します。

AlwaysOn可用性グループ

高可用性とは何ですか?可用性グループは、ここでは高可用性の論理的な封じ込めになりますが、可用性グループはいくつかのデータベースと仮想ネットワーク名(リスナー、オプションのクラスターリソース)。ログインやSQL ServerエージェントジョブなどのサーバーオブジェクトはHAソリューションの一部ではないことに注意してください。これらが可用性グループで適切に実装されていることを確認するには、特別な考慮が必要です。過度に負担のかかる要件ではありませんが、注意する必要があります。

レポーティングはどうですか?これはレポーティングに最適なソリューションですが、レポーティングインスタンスとして同期レプリカを使用することはおそらくないでしょう。同期と非同期の2つのコミット関係があります。私の意見では、実際に私が見たところ、同期セカンダリレプリカが障害を待っているということです。問題が発生した場合にデータ損失のないフェイルオーバーを実行する準備ができているレプリカと考えてください。次に、そのレポートワークロードを処理できる非同期レプリカがあります。このレプリカを前述のソリューションとして使用しているのではなく、レポート作成などにも使用しています。レポートのワークロードは、このレプリカを指すことができます(リスナーを介した読み取り専用ルーティングを介して、直接的または間接的に)。

フェイルオーバーが発生するとどうなりますか?自動フェイルオーバーとペアになっている同期コミットセカンダリレプリカの場合、これはSECONDARY_NORMALからPRIMARY_NORMALへのレプリカロール状態の変更になります。 。自動フェイルオーバーが存在するためには、現在同期されている同期セカンダリレプリカが必要です。実装されているのは Flexible Failover Policy であり、実際にこのフェイルオーバーが発生するタイミングを決定します。そのポリシーは確かに構成可能です。

Any client abstraction?はい、オプションでAlwaysOn可用性グループリスナーを構成できます。これは基本的には、現在のプライマリレプリカを指す仮想ネットワーク名(AGのクラスターグループ内のクラスターリソースとしてWSFCから見ることができる)にすぎません。これは、レポートのワークロードをシフトする上で重要な部分であり、ReadOnlyトラフィックをリダイレクトするサーバーに読み取り専用ルーティングリストを設定する(これは、SQLの.NET Frameworkプロバイダーを使用して、接続文字列を介して設定されます)サーバー、これはApplication Intentパラメーターになり、ReadOnly)に設定されます。また、セカンダリレプリカの役割で、このレポートワークロードを受信するレプリカごとに、読み取り専用のルーティングURLを設定する必要があります。

トランザクションレプリケーション

高可用性とは何ですか?これは議論の余地がありますが、私は何も言いません。レプリケーションを高可用性ソリューションとしてはまったく見ていません。はい、データの変更はサブスクライバーにプッシュされていますが、ここではパブリケーション/記事レベルで話しています。これはデータのサブセットになります(すべてのデータを含めることができますが、強制されません。つまり、パブリッシャーデータベースに新しいテーブルを作成すると、サブスクライバーに自動的にプッシュされません)。 HAに関する限り、これは基本的なものであり、堅固なHAソリューションでグループ化することはしません。

レポートについてはどうですか?データのサブセットについてレポートするための優れたソリューションです。トランザクション数の多い1 TBデータベースがあり、そのレポートのワークロードをOLTPデータベースから除外したい場合、トランザクションレプリケーションはプッシュする優れた方法です。レポートワークロードのサブスクライバー(または複数のサブスクライバー)へのデータのサブセット。1TBデータのレポートワークロードが約50 GBだけの場合、これはスマートソリューションです)また、ビジネスニーズに合わせて比較的設定可能です。

概要

まとめると、(一部はビジネスによって)回答する必要があるいくつかの質問があります。

  1. 何が高可用性である必要がありますか?
  2. [〜#〜] sla [〜#〜]はHA/DRに対して何を指示しますか?
  3. どのようなレポートが発生し、どのようなレイテンシが許容されますか?
  4. 地理的に分散したHAで何を処理する必要がありますか? (ストレージレプリケーションは高価ですが、FCIには必須です。AGはスタンドアロンインスタンスからの共有ストレージを必要としません。クォーラムにファイル共有監視を使用すると、共有ストレージの必要性がなくなる可能性があります)
52
Thomas Stringer

Windowsフェールオーバークラスター内の2つ(またはそれ以上)のサーバー、クラスター化されたインスタンスとしてのSQL Server

  1. どのような種類のワークロードですか?「状況によって異なります」-しかし、真剣に、これはデータセンターの高可用性でローカルを必要とするオンラインアプリケーションに役立ちます。 1つのマシンまたは1つのオペレーティングシステムの障害から保護されます。ログイン、ジョブ、新しいデータベース、メンテナンスなどは、同じストレージを共有するまったく同じ2つのノードを持つクラスターであり、すべて同じシステムデータベースを持っているため、すべて自動的に同期されます。フェイルオーバーは非常に高速ですが、フェイルオーバーが発生したときにSQL Serverが再起動したように見える一時的な障害がまだあります。

  2. 短所/懸念-単一障害点は、ストレージとそのすべてのコンポーネントです。 SANベンダーは常に「SANは失敗しない」と言っていますが、ストレージエリアネットワークには多くの可動部分があり、私がブログ こちら で説明しているように、可能です。 -あなたは何もすることができないセカンダリサーバーにお金を払っていますが、待機して待機します。これで、アクティブ/アクティブ/マルチノードを実行し、どちらの方向にもフェイルオーバーして2番目のノードを使用できる2つのアクティブなインスタンスを作成できます。

  3. 自動フェイルオーバー「最も」自動。目撃者は必要ありません、それはクラスターです。これは、可能な限りシームレスにするためのクラスターの役割です。これらのいずれかを使用すると、フェイルオーバーが発生すると、SQLを起動する必要があるか、接続をポイントする必要があるため、フェイルオーバーが発生することになります。ここでそれが発生すると、基本的にSQLの再起動のように感じられ、DBが復旧してリカバリなどを実行します。

ダウンタイムに対する許容度が非常に低いため、ローカルデータセンターの高可用性環境で「すべてのデータベース、すべてのログインなどで完全に稼働したい」というクライアントがある場合、フェールオーバークラスターインスタンスを検討します(ただし、あなたが言及する最後のオプションは強力な候補であり、いくつかの管理オーバーヘッドを行う必要がありません)。サイトの障害またはSAN障害から保護するために、おそらくローカルFCIおよびAG非同期セカンダリを実行します。

トランザクションレプリケーションで最新の状態に維持される2つ(またはそれ以上)のSQL Serverインスタンス

  1. どのような種類のワークロードですか?正直なところ、最初の選択肢として高可用性または障害復旧が必要な多くのケースでは、ここに行きません。確かにSQL 2012にはありません。しかし、基本的には、近くにないデータセンターに行く必要があり、AGを使用できなかった場合(おそらく、AGに必要なWindowsクラスターを使用できないドメインの問題)、これは、レプリケーションは実行できるが、AGは実行できないSQL Server標準では、セカンダリ側で読み取り、非同期で実行する機能が必要でした。
  2. 短所/懸念-それは複製です。オーバーヘッドがあり、同期が取れなくなる可能性があり、ソース側のパフォーマンスに問題が発生する可能性があります。
  3. 自動フェイルオーバー-いいえ。自分で管理する必要があります。どちらかを指すCNAMEを使用するか、理論的にはこれを行う独自のプロセスを記述できますが、そのまま使用できますか?ここに注意してください。

同期コミットモードで構成されたSQL Server可用性グループ内の2つ(またはそれ以上)のSQL Server

これは、最近ますます人々が実装するのを助けてきたものですが、時々私はまだクラスタリングに行きます。

  1. どのような種類のワークロード?これは、同期を維持できる管理可能なデータベースのセットと、そのジョブを確実にするためのリソースと時間がある場合に最適です。ログイン、新しいデータベースなどの同期を維持します(ただし、 SQL Skillsは優れたアドインを作成しています を自動化して、オプションをさらに強力にします)。物事を完全に分離したいときは、これが好きです。ハードウェアの問題、OSの問題、SQLのインストールの問題、パッチの問題、SAN /ストレージの問題から保護しています。また、セカンダリ(エンタープライズライセンスを支払いたい場合)をアクティブなセカンダリにして、読み取り、バックアップなどを行うことができるという利点もあります。さらに、3番目のセカンダリを追加することもできます。リモートサイトで非同期であり、フェイルオーバー/ DRがあるセカンダリ。
  2. Cons/Concernsライセンス、レプリカの最大数、最大のメリットの一部(アクティブセカンダリ)を利用するためのライセンスコスト、エンタープライズが必要、2倍が必要クラスタリングよりも多くのストレージ。
  3. 自動フェイルオーバー-はい。これは、ウィットネスセットアップで発生する可能性があり、アプリ開発者はノードではなくリスナーに接続できるため、リスナーがポイントする場所でフェイルオーバーが発生し、そこで問題が発生しないはずです。つまり、ここでそれを行うことができます-すべきです-もちろん、それをうまくテストする必要があります。

まとめ

HAとDRは異なります。そして、これらのテクノロジーは、どちらかを提供するのに役立ちます。高可用性とは(1つのマシンで)何か問題が発生した場合に迅速に回復できることを意味し、短い復旧ポイント目標と復旧時間目標を達成します。それがクラスタリングと同期AGです。

災害復旧とは、「HAソリューションでも障害が発生したときに立ち上がることができます。別のデータセンターに移動したり、ミラーリングしたり、レプリケーションしたりするときにAGになる可能性があります。

23
Mike Walsh

sharedとは何かを考慮することも重要です。

フェールオーバークラスタリングは、oneディスクアレイを共有する2つ以上のサーバーノードを使用します。ディスクアレイがダウンすると、サーバーノードの数に関係なく、サービスが失われます。そのディスクアレイが配置されているサーバールームが火災や洪水に遭遇すると、サービスが利用できなくなります。

AlwaysOn可用性グループとデータベースミラーリングは、「シェアードナッシング」クラスタリングテクノロジーです。データベースは、複数のサーバーの複数のディスクアレイに存在します。良好なネットワークリンクがある場合、複数のサーバーが複数のサーバールームにあり、火災や洪水から保護されます。

9

完全を期すために、プレーンな古いミラーリングを使用するオプションがあります。ここでの利点には、可用性グループを使用する複雑さがなく、フェールオーバークラスタリング用の共有ストレージを必要としない、データベースの2つのコピーがあることが含まれます。短所はありますが、ミラーリングは非推奨です。

ミラーリングを使用したフェイルオーバー時間は約10秒ですが、アプリケーションコードはフェイルオーバー時に発生しているトランザクションを再試行できる必要があります。

6
Max Vernon