web-dev-qa-db-ja.com

SQLインスタンスを手動で別のノードに移動すると、データベースミラーのフェールオーバーがすぐに発生する

2ノードのSQLクラスター(2008 R2)があります。

SQLインスタンス内の一部のデータベースは、自動フェイルオーバーを備えた高安全性を使用して、リモートサイトの別のサーバーにミラーリングされます。これらのデータベースのミラーリング接続タイムアウト値は90秒に設定されています。

クラスター内のあるノードから別のノードにSQLを移動すると、フェールオーバークラスターマネージャーアプリケーションのオプションである[このサービスまたはアプリケーションを別のノードに移動する]を使用すると、ミラーリングされているデータベースが即座にミラーにフェイルオーバーします。

これは望ましくない動作です。ミラーリング接続タイムアウト値を設定する理由は、クラスターが完全に失敗し、機能しているノードがない場合にのみ、データベースミラーにフェールオーバーするためです。

これを達成する方法はありますか?それは可能であるかのように感じられます。そうしないと、クラスター内のすべてのノードのフェイルオーバーがミラーフェイルオーバーをトリガーするため、クラスタリングと自動フェイルオーバーデータベースミラーリングを組み合わせるという概念は機能しません。

ありがとう。

5
paulH

ミラーのフェイルオーバーを防ぐ1つの方法は次のとおりです。

  1. ALTER DATABASE XYZ SET PARTNER SUSPENDでミラーリングを一時停止
  2. SQLインスタンスを移動する
  3. ALTER DATABASE XYZ SET PARTNER RESUMEでミラーリングを再開します

ミラーリング監視サーバーとセカンダリサーバーの両方がプライマリインスタンスを認識できなくなったため、インスタンスはミラーにフェールオーバーしています。

ミラーリングとクラスタリングを組み合わせてSQL Server 2012可用性グループを再作成しようとしているようです。

データベースミラーリングは、いわゆる「ソフト」エラーでのみタイムアウトします。クラスターのフェイルオーバーなどのハードエラーはミラーリングセッションに報告され、即座にフェイルオーバーが発生します。詳しくは http://msdn.Microsoft.com/en-us/library/ms190913.aspx をご覧ください。

ハードエラーの考えられる原因には、次の条件が含まれます(これらに限定されません)。

A broken connection or wire

A bad network card

A router change

Changes in the firewall

Endpoint reconfiguration

Loss of the drive where the transaction log resides

Operating system or process failure

ミラーリングのタイムアウトを引き起こす可能性のある条件には、次のものがあります(ただし、これらに限定されません)。

Network errors such as TCP link time-outs, dropped or corrupted packets, 
    or packets that are in an incorrect order.

A hanging operating system, server, or database state.

A Windows server timing out.

Insufficient computing resources, such as a CPU or disk overload, the transaction 
    log filling up, or the system is running out of memory or threads. In these 
    cases, you must increase the time-out period, reduce the workload, or change 
    the hardware to handle the workload. 

ミラーリングと潜在的な問題の詳細については、私の質問を参照してください ミラーリングセッションがタイムアウトしてフェールオーバーする原因は何ですか?SQL Server 2005

5
Max Vernon

これは、サーバーは応答しているがミラーリングエンドポイントがダウンしているために発生しています。パートナーと証人は、OSから、エンドポイントが存在するポートが閉じているという応答を受け取り、すぐにフェイルオーバーを開始します。タイムアウトは、「探しているポートがもうリッスンしていない」という応答ではなく、ホストから応答を受け取っていない場合に適用されます。

これを回避するには、Maxが推奨するようにミラーリングセッションを一時停止するか、計画外のクラスターフェイルオーバーも懸念される場合は、swasheckが推奨する自動フェイルオーバーを無効にし、必要に応じて手動でミラーフェイルオーバーを行う必要があります。

2
cfradenburg