私が常に高可用性ソリューションを視覚化する方法は次のとおりです。
SQL Serverフェールオーバークラスターインスタンス(FCI)
高可用性とは何ですか? インスタンス全体。これには、すべてのサーバーオブジェクト(ログイン、SQL Serverエージェントジョブなど)が含まれます。これには、データベースとそれに含まれるエンティティも含まれます。可用性の高いSQL Serverインスタンスには最適なソリューションです。これは、この特定のソリューションでの封じ込めレベルになるからです。
レポートはどうですか? なし、NULL、存在しない。フェールオーバークラスターインスタンスには、インスタンス、VNNなどを含むクラスターグループを配信するアクティブノードがあり、他のすべてのノードはパッシブで、アイドル状態(現在のクラスターグループに関する限り)であり、フェールオーバーを待機しています。
フェールオーバーが発生するとどうなりますか? FCIのダウンタイムは、パッシブノードがクラスターリソースを取得し、SQL Serverインスタンスを実行状態にするのにかかる時間によって決まります。通常、これは時間的に最小限です。
クライアントの抽象化? はい。これは、フェールオーバークラスターインスタンスの仮想ネットワーク名を使用して本質的に組み込まれます。これは、常にSQL Serverクラスターリソースを現在配信しているアクティブノードを指します。
AlwaysOn可用性グループ
高可用性とは何ですか? 可用性グループはここで高可用性の論理的な封じ込めになりますが、可用性グループは多数のデータベースと仮想ネットワーク名(リスナー、オプションのクラスターリソース)で構成されます。ログインやSQL ServerエージェントジョブなどのサーバーオブジェクトはHAソリューションの一部ではないことに注意してください。これらが可用性グループで適切に実装されるように特別な考慮が必要です。過度に負担のかかる要件ではありませんが、注意が必要です。
レポートはどうですか?これはレポート用の優れたソリューションですが、レポートインスタンスとして同期レプリカを使用することはおそらくないでしょう。同期と非同期の2つのコミット関係があります。私の意見では、実際に見たところ、同期セカンダリレプリカが災害を待っているということです。問題が発生した場合にデータ損失なしのフェールオーバーを実行する準備ができているレプリカと考えてください。次に、そのレポートワークロードを処理できる非同期レプリカがあります。このレプリカを前述のソリューションとして使用するのではなく、レポート作成などに使用します。レポートワークロードは、このレプリカを指すことができます(直接、またはリスナーを介した読み取り専用ルーティングを通じて間接的に)。
フェールオーバーが発生するとどうなりますか? 自動フェールオーバーとペアになっている同期コミットセカンダリレプリカの場合、これはレプリカロールの状態がSECONDARY_NORMALからPRIMARY_NORMALに変更されます。自動フェールオーバーを行うには、現在同期されている同期セカンダリレプリカが必要です。実装されるのは、実際にこのフェールオーバーが発生するタイミングを決定するフレキシブルフェールオーバーポリシーです。そのポリシーは実際に構成可能です。
クライアントの抽象化? はい、オプションでAlwaysOn可用性グループリスナーを構成できます。これは基本的に、現在のプライマリレプリカを指す仮想ネットワーク名(WSFCを介してAGのクラスターグループ内のクラスターリソースとして見ることができる)にすぎません。これは、レポートワークロードを変更するうえで重要な部分です。また、ReadOnlyトラフィックをリダイレクトするサーバーに読み取り専用ルーティングリストを設定します(これは、SQL用の.NET Framework Providerを使用して、接続文字列を通じて設定されます)サーバー、これはApplication Intentパラメーターになり、ReadOnlyに設定されます。また、セカンダリレプリカの役割のときにこのレポートワークロードを受信するレプリカごとに読み取り専用ルーティングURLを設定する必要があります。
トランザクションレプリケーション
高可用性とは何ですか? これは議論の余地がありますが、私は何も言わないつもりです。私は、レプリケーションを高可用性ソリューションとはまったく考えていません。はい、データの変更は購読者にプッシュされていますが、私たちは出版物/記事レベルで話しています。これはデータのサブセットになります(すべてのデータを含めることはできますが、強制されません。つまり、パブリッシャーデータベースに新しいテーブルを作成し、サブスクライバーに自動的にプッシュされません)。HAに関する限り、これは最下層であり、堅固なHAソリューションでグループ化するつもりはありません。
レポートはどうですか? データのサブセットについてレポートするための優れたソリューション、それについては疑いの余地はありません。トランザクションの多い1 TBのデータベースがあり、そのレポートワークロードをOLTPデータベースから除外したい場合、トランザクションレプリケーションは、レポートワークロードのサブスクライバー(またはサブスクライバー)にデータのサブセットをプッシュする優れた方法です。その1 TBのデータのうち、レポートワークロードが約50 GBだけの場合はどうなりますか?これはスマートなソリューションであり、ビジネスニーズを満たすように比較的構成可能です。
概要
要約すると、回答が必要な少数の質問です(一部はビジネス側)。
- 高可用性が必要なのは何ですか?
- 何がSLAの HA / DRのためのディクテーションは?
- どのような報告が行われ、どのようなレイテンシーが許容されますか?
- 地理的に分散した HAで何を処理する必要がありますか?(ストレージレプリケーションは高価ですが、FCIには必須です。AGはスタンドアロンインスタンスからの共有ストレージを必要とせず、ファイル共有監視を使用してクォーラムを共有ストレージの必要性を潜在的に排除できます)