web-dev-qa-db-ja.com

SQL Server2005ミラーDBリカバリ

シナリオ:ActiveDirectoryドメイン環境でSQLServer 2005StandardのバージョンのDBミラーリングを監視サーバーと一緒に使用したいと考えています。データベースは、DB接続文字列以外は変更できないサードパーティのアプリサーバーから供給されます。

これに関連する2つの質問:

  1. サードパーティのアプリサーバーができるだけ少ない費用で障害を目に見えないようにする(または少なくとも手作業を少なくする)にはどうすればよいでしょうか。私の考えは、プライマリを指すDNS "sqlserver.ourdomain"を設定し、それを接続文字列で使用することです。その後、失敗した場合は、ミラーを指すようにDNSを変更し、アプリサーバーを再起動します。目に見えない、または自動ではありませんが、安価で、機能するはずのようです。
  2. 障害後にトランザクションをセカンダリからプライマリにプッシュして戻し、プライマリを再プロモートするにはどうすればよいですか?このプロセスでは、#1のフェイルオーバーモードを「元に戻す」ことを考慮に入れる必要があります。明らかに、上記のDNSオプションを使用すると、DNSをプライマリに再ポイントしますが、システムを以前と同じように戻すにはどうすればよいですか?プライマリをミラーから最新の状態に戻し、ミラーをミラーに降格しますか?
3
Matt Rogish

質問1:あなたはそれを考えすぎています。 SQL 2005のデータベースミラーリング仕様は、接続文字列に組み込まれています。接続文字列でプライマリサーバーとミラーの両方を指定すると、ドライバーはサーバーを順番に試行します。これは、データベースミラーリングの美しさの1つです。クライアントアプリを変更する必要はありません。

詳細はこちら: http://msdn.Microsoft.com/en-us/library/5h52hef8.aspxhttp://msdn.Microsoft.com/en-us/library/ ms366348.aspx

質問2:監視サーバーを使用しているとおっしゃっていたので、自動フェイルオーバーを使用していると思います。 SQL 2005のデータベースミラーリングは、このようなことを自動的に行います-詳細はこちら:

http://msdn.Microsoft.com/en-us/library/ms189590.aspx

自動フェイルオーバーを使用していない場合でも、非常に簡単です。データベースを右クリックして[データベースミラーリング]に移動すると、データベースをプライマリからセカンダリに、またはその逆にフェイルすることができます。再起動などの停止後、自動的に同期に戻ります。

8
Brent Ozar

覚えておくべきもう1つのこと(あなたの質問とは関係ありませんが、人々が時々考えないこと)-元のプリンシパルがしばらくダウンする場合は、新しいプリンシパルのトランザクションログを防ぐためにミラーリングを削除する必要があります制御不能に成長しています。それ以外の場合、ミラーリングでは古いプリンシパルがいつかオンラインに戻ると想定されるため、トランザクションログはすべて保持する必要があります。

ありがとう

2
Paul Randal