SQL Server のミラーリング テスト
■環境
・サーバー 2台 (Win Server2003std / Win Server 2008std)
・SQL Server2005 std(SP3)
・アプリ:delphi2009、およびMS-ACCESSでSQLServerに接続して使用している
■やったこと
1.SQLサーバーのミラーリング設定を登録
・テストサーバーに、「ミラー用のインスタンス」と「監視用のインスタンス」を作成する
・エンドポイントを「プリンシパル」「ミラー」「監視」のそれぞれのインスタンスに登録する
・プリンシパルサーバのDBの「完全バックアップ」と「トランザクションログバックアップ」を取得し、
ミラーサーバーに復旧(操作不可状態)させる
・プリンシパルのDBに「ウイザード」を使ってミラーリングを構成する
・ミラー側のDBが「ミラー、同期済み/復元しています」の状態になっていることを確認する
2.自動フェールオーバーのテスト
・プリンシパルサーバーをシャットダウンさせ、ミラー側がプリンシパルに切り替わることを確認
・プリンシパルサーバーを立ち上げて元の状態にもどるか確認
・手動でフェールオーバー操作を実施する
3.アプリケーションからのテスト
・アプリケーションがミラー側を参照して動作するか確認
■わかったこと(つまづいたところ)
1.SQLサーバーのミラーリング設定を登録
・SQL Serverのサービスはドメインユーザで立ち上げないと、ミラーリングは構成できない
「Alterが失敗しました ~」と何のことかわからないメッセージが表示され、ミラーリング失敗。
SQL Server起動ユーザをビルトインのローカルユーザ(Administrator)にしていたため、
ミラーリングに失敗していたようです。
SQL構成マネージャで、起動用のユーザ名をドメインのIDに設定し、サービスを再立ち上げして
なんとかクリアー!!
2.自動フェールオーバーのテスト
・プリンシパル側が停止(シャットダウン)すると、予定通りミラー側に自動的に切り替わった。
しかし、プリンシパル側が立ち上がっても、自動的には元に戻らなかった。
もとに戻ると勝手に想像していたが、もとに戻らないようです。
・プリンシパル側が同期状態になるまで、数分かかる。
同期状態になる前に、手動でフェールオーバーさせても失敗する
焦りました。ミラー側がプリンシパルになり、元に戻れないんじゃないかと焦ってしまいました。
数分待つと状態が変わり、手動でフェールオーバーできるようになりました。
3.アプリケーションからのテスト
・アプリを修正しないと、フェールオーバー対応できない
Delphiではこれまで「Microsoft OLE DB Provider for SQL Server」を使ってSQL Serverに接続し
ていましたが、どうもフェールオーバーに対応していないようです。
プロバイダを「SQL Native Client」に切り替えて、「FailoverPartner=サーバー名\インスタンス名」
のパラメータを接続文字に追加して解決しました。
Microsoft AccessではODBCで接続しているので簡単にはミラーリングに対応できないかもです。 ショックです。
◆2013/03/11追記
・プリンシパル側が停止(シャットダウン)すると、予定通りミラー側に自動的に切り替わった。
しかし、プリンシパル側が立ち上がっても、自動的には元に戻らなかった。
→ フェールオーバー(切り替え)が実行されると、プリンシバルとミラーが切り替わる。
つまり、元に戻すには再びフェールオーバーを実行する必要がある(自動・手動いづれか)
・プリンシパル側が同期状態になるまで、数分かかる。
→ 表示上の話かもしれない。
「最新の状態に更新」を実行し、表示をリフレッシュすればよいのでは。
見た目上、状態が変わっていないだけかもしれない。
Microsoft AccessではODBCで接続しているので簡単にはミラーリングに対応できないかもです
→ サーバーの完全名とポート番号を指定する必要がある?
http://support.microsoft.com/kb/941526/ja
通りすがりさん
SQL Server関係で初めてコメント頂きました。
ありがとうございます。
・戻しについては、その後、エージェントを使って勝手に切り替わるように変更しました。
・戻りの時間ですが、表示の更新はやってます。(笑
・Accessからの接続は、その後、ストアドを実行する前にプリンシパルが生きてるか確認し、
応答がなければ、ミラー側にアクセス(ADO接続)するように関数を作って対応しましたが、
結構苦労した覚えがあります。
これまで、サーバーの音がうるさい時は、プリンシバル側を停止するという、変な運用を行っていた
関係でミラーリングを行っていましたが、防音ラック購入でようやく24時間稼働させられるようになり、
ミラーリングはやめてしましました。(笑)