先日ちょっとSQL Serverの冗長化に関して調べたので書いておきます。
フェールオーバークラスタ(共有ディスク型)を用いた冗長化が可能
レプリケーションを利用した冗長化が可能。自動フェールオーバーまでやるか、やらないかは選択可能。
自動フェールオーバーを行うためにはミラーリング監視サーバーが別途必要。
自動フェールオーバーを行うには、「高い安全性モード」にする必要があり、パフォーマンスは落ちる。
手動フェールオーバーにするなら、ミラーリング監視サーバーは必要ない。
手動フェールオーバーにするには、「高い安全性モード」にする必要があり、パフォーマンスは落ちる。
サービスの強制にするなら、「高パフォーマンスモード」にでき、パフォーマンスは良いが、一部データが失われる可能性がある。
「高い安全性モード」の待機系のサーバーでのデータ受け取りを確認してからのコミットというロジックは遠隔地でのディザスタリカバリのパターンでは事実上パフォーマンス的に使えないのでは?という気がする。もちろんケースバイケースだろうけれども。
データベースミラーリングセッションに接続し、フェールオーバーさせるためにはアプリケーション側でイニシャルパートナー名に加えてフェールオーバーパートナー名もキャッシュされている必要がある。(そうでないと、フェールオーバーしても、接続できない)
http://www.microsoft.com/japan/sqlserver/2008/howtobuy/system.mspx
SQLサーバーのPassiveと監視サーバーにはライセンスはいらない。