SQL2008ミラーリングを使用してミラーリングされたデータベースがあります。
Linux上でMicrosoftSQLタイプ4JDBCドライバーを使用するJavaアプリケーションがあります。
このセットアップをQA環境として複製しました。
私のQA環境では、データベースを手動でフェイルオーバーしたときに、接続が正常に確立されていれば、フェイルオーバーは完全に透過的でした。アプリケーションに新しい原則(古いミラー)と通信させるために、何も実装する必要はありませんでした。
ただし、ライブ環境では、手動でフェイルオーバーすると接続が機能しなくなります。
ライブ環境とQA環境の間にはかなりの違いがありますが、このプロセスの基本とは言えません。データベース間の通信は両方の状況ですべて非常にローカライズされており、ファイアウォールはありません(Windows Server 2008に組み込まれているものを除く) )私のJavaアプリとSQL 2008を実行しているWindowsボックスの間。
この問題を診断する方法について誰かが何かアイデアがありますか?または、このフェイルオーバーの透過性がどのように発生するかを誰かに教えてもらえるので、これを自分で診断する方法を見つけることができますか?
1489 次
1 に答える
1
この動作は、クライアントリダイレクト動作の一部としてSQLServerプロバイダーによって処理されます。これはSQLServer2005 JDBC(Java Database Connectivity)1.1ドライバーの一部でしたが、そのプロバイダーが新しいタイプ4ドライバーに直接使用されたかどうかはわかりません。
ライブ環境では、アプリケーションはフェールオーバー前にプライマリサーバーに正常に接続しているので、フェールオーバーパートナーをキャッシュして、フェールオーバーが発生したときにそれを利用できますか?
確かに、接続文字列でフェールオーバーパートナーを明示的に指定できます。これは、推奨される方法です。
jdbc:sqlserver://serverA:1433; databaseName=AdventureWorks; integratedSecurity=true; failoverPartner=serverB
リダイレクト動作の完全なドキュメントは、ここにあります。
ここにフェイルオーバーのドキュメントを追加すると、手動で検討できる可能性があります。
于 2011-11-08T10:16:15.407 に答える