1

私は最初の.NETMVCアプリケーションを作成しており、コードファーストアプローチを使用しています。最近、ミラーデータベースとウィットネス(フェールオーバークラスターと混同しないでください)を使用して高可用性のために2つのSQL Serverインストールを構成し、フェールオーバープロセスを実行する方法を学びました。Webアプリを高可用性DBにマウントして、両方を練習する絶好の機会だと思います。

さて、ミラー構成で私が学んだこと(間違っている場合は訂正してください)では、最初のDBがダウンした場合に、セカンダリDBへのフェイルオーバーを監視します...ただし、アプリケーションは、参照する接続文字列も変更する必要がありますセカンダリサーバー。

Web.config(または他の場所)に両方のアドレスを設定し、適切な接続文字列を選択するための最良のアプローチは何ですか?

4

2 に答える 2

1

ミラーデータベースへの接続の経験がまったくないので、これはすべて異端です!:)

つまり、接続文字列でFailoverPartner属性を渡す限り、特別なことをする必要はないかもしれません。その長い間、新しい接続を試行するために追加のエラー処理が必要になる場合があります。これにより、提供されるデータは実際に新しい接続でFailoverPartner名を使用します。

開始するには、クライアントをデータベースミラーリングセッションに接続することに関するいくつかの良い情報があるようです。あなたはそれをチェックする機会がありましたか?

そうでない場合は、 ConnectionStringプロパティ属性のFailoverPartner属性を導入する初期接続の作成があります。

データベースミラーリングセッションに再接続すると、フェイルオーバーが原因でクライアントが切断された場合、クライアントはこの例外をトラップし、再接続の準備をする必要があります。

アプリケーションはエラーを認識する必要があります。次に、アプリケーションは失敗した接続を閉じ、同じ接続文字列属性を使用して新しい接続を開く必要があります。

FailoverPartner属性が使用可能な場合、このプロセスはクライアントに対して比較的透過的である必要があります。

上記が機能しない場合は、アプリケーション層に実際にロジックを導入して、プライマリノード、フェイルオーバーノード、およびそれぞれの接続文字列を追跡し、その情報をどこかに保持する準備をする必要があります。データアクセスプロバイダーが私たちのためにやってくれるはずです(目を大きく開いてください)。

SQL Serverを使用したデータベースミラーリングに関するこのServerFaultの投稿もあります。これは、追加の参照情報がある運用上の観点から興味深い場合があります。

うまくいけば、実際の経験を持つ誰かがこれのいずれかをバックアップします!

于 2011-03-15T02:55:10.163 に答える
0

これは完全にベースから外れている可能性がありますが、Webサーバーとデータベースサーバーの間にロードバランサーがある場合はどうでしょうか。

ロードバランサーは、基本的なヘルスチェック手法(pingなど)を使用して、両方のデータベースをプールに配置します。

その場合、構成はロードバランサーのIPを指すだけでよく、変更する必要はありません。

これは、これらのネットワークデバイスが適していることです。サーバーの状態を決定するのはプログラミングフレームワーク(ASP.NET)の仕事ではありません。

于 2011-03-15T02:34:50.000 に答える