単一ファーム内でミラー化されたデータベースのフェールオーバーと回復を行う
ここでは、記事「SQL Server のデータベース ミラーリングを使用して単一のファーム内で可用性を構成する」の手順に従って、高可用性データベース ミラーリングを使用するように構成された Microsoft Office SharePoint Server 2007 ファームのフェールオーバーおよび復元の方法について説明します。
この記事に含まれるセクションは次のとおりです。
ミラー化されたデータベースの自動フェールオーバー処理
ミラー化されたデータベースの手動フェールオーバー処理
ミラーリング フェールオーバーの監視と通知
ジョブ : その他すべてのデータベースをフェールオーバーさせる
ジョブ : 接続エイリアスを更新する
フェールバックする
概要
ミラー化されたデータベースを実行している Office SharePoint Server 2007 環境のフェールオーバー時には、以下の処理が実行されます。
プリンシパル サーバー上の 1 つ以上のデータベースが、自動または手動のどちらかによりミラー データベースにフェールオーバーされます。
プリンシパル サーバー上のその他すべてのデータベースが強制的にフェールオーバーされます。
ミラーリングを監視し、すべてのデータベースを強制的にフェールオーバーさせるには、Microsoft SQL Server 2005 の警告およびジョブを使用することをお勧めします。
データベースを参照するすべてフロントエンド Web サーバーおよびコンピュータ上の接続エイリアスがミラー サーバーを指すようにリセットされます。
ミラー化されたデータベースの自動フェールオーバー処理
自動フェールオーバーが発生するのは、プリンシパル サーバーが他のデータベース ミラーリング構成との通信を失い、ミラー サーバーおよびミラーリング監視サーバーが通信を維持している場合です。
注意
すべてのサーバー インスタンスが通信を失った場合、後でミラーリング監視サーバーおよびミラー サーバーが通信を回復しても、自動フェールオーバーは発生しません。
自動フェールオーバーが発生すると、以下の処理が実行されます。
プリンシパル サーバーが実行中の場合、プリンシパル サーバーはプリンシパル データベースの状態を "切断" にし、すべてのクライアントをプリンシパル データベースから切断します。
ミラーリング監視サーバーおよびミラー サーバーは、プリンシパル サーバーが使用できないことを登録します。
やり直しキューでログが待機中の場合、ミラー サーバーはミラー データベースのロールフォワードを終了します。ログの適用に必要な時間は、システムの速度、最新の作業負荷、およびやり直しキューのログのサイズによって異なります。
前のプリンシパル サーバーは、セッションに再度参加したときに、フェールオーバー パートナがプリンシパル ロールを所有していることを認識します。前のプリンシパル サーバーはミラー サーバーのロールを引き継ぎ、前のプリンシパル データベースはミラー データベースになります。新しいミラー サーバーは、可能な限り迅速に新しいミラー データベースをプリンシパル データベースと同期します。新しいミラー サーバーがデータベースを再同期するとすぐに、フェールオーバーが再び可能になります。ただし、その方向は反転します。
自動フェールオーバーの詳細については、「自動フェールオーバー」(https://go.microsoft.com/fwlink/?linkid=83690&clcid=0x411) を参照してください。
ミラー化されたデータベースの手動フェールオーバー処理
手動フェールオーバーが発生するのは、通常、プリンシパル サーバーとミラー サーバーの両方が実行中の場合です。管理者は、アクティブ データベースをプリンシパルからミラーに切り替える意識的な決定を行います。
手動フェールオーバー中は、以下の処理が発生します。
管理者はプリンシパル サーバーに接続し、データベースごとに以下の Transact-SQL コマンドを発行します。
USE master; ALTER DATABASE <database_name> SET PARTNER FAILOVER; -- where database_name is the mirrored database.
このステートメントにより、ミラー サーバーからプリンシパル ロールへの移行がすぐに開始されます。
前のプリンシパル サーバーでは、クライアントがデータベースから切断され、コミットされていないトランザクションがロールバックされます。
ミラーリング監視サーバーを含む自動フェールオーバー設定で手動フェールオーバーを実行すると、プリンシパル サーバーおよびミラー サーバーは自動的にロールを変更します。
ミラーリング フェールオーバーの監視と警告
ミラーリングを監視し、強制的にフェールオーバーを行うジョブを実行するには、SQL Server の警告を使用します。このジョブと警告は、SQL Server のプリンシパル インスタンスおよびミラー インスタンスの両方で使用する必要があります。
警告 : 単一のデータベースのプリンシパルからミラーへの切り替えを検出する
この警告では、Transact-SQL コマンドを使用して、任意のデータベースが対応するミラー データベースに切り替わったかどうかを検出します。
SELECT * FROM Database_MIRRORING_STATE_CHANGE
WHERE State=8 AND (databasename='Central Administration' OR databasename='Configuration'
ORdatabasename='SSP'
OR databasename=’SSP Content'
OR databasename='SSP Search'
OR databasename='WSS Search'
OR databasename='Content_<port>' )
ジョブ : その他すべてのデータベースをフェールオーバーさせる
検出警告の発生後、すべてのデータベースを対応するミラー データベースにフェールオーバーするジョブを実行します。
次の例では、すべてのミラー化データベースをフェールオーバーするためにジョブ内で使用できる Transact-SQL スクリプトを示します。
USE master;
DECLARE i CURSOR
READ_ONLY
FOR
SELECT name FROM sys.databases WHERE database_id IN
(SELECT database_id FROM sys.database_mirroring WHERE mirroring_state=4)
DECLARE @name varchar(255)
DECLARE @cmd varchar(1000)
OPEN i
FETCH NEXT FROM i INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
set @cmd = 'ALTER Database [' + @name + '] SET PARTNER FAILOVER;'
exec (@cmd)
DECLARE @message varchar(100)
SELECT @message = 'Failover for : ' + @name
PRINT @message
END
FETCH NEXT FROM i INTO @name
END
CLOSE i
DEALLOCATE i
GO
ジョブ : 接続エイリアスを更新する
フェールオーバー後、Office SharePoint Server 2007 を実行しているすべてのコンピュータ上で、SQL Server 接続エイリアスに関連付けられているデータベース サーバー名をプリンシパル サーバーからミラー サーバーに変更する必要があります。
注意
それぞれの Web アプリケーション内の参照は変更されません。そのため、フェールオーバー後の Office SharePoint Server 2007 での作業は不要です。
フェールオーバー完了後に実行する SQL Server ジョブを作成します。そのジョブで、エイリアス値のレジストリ設定をミラーに変更するコマンドを実行します。
\Registry\Machine\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo
<alias> = REG_SZ DBMSSOCN,DBMirror
注意
SQL Server ジョブおよび警告の実行に使用するアカウントには、Office SharePoint Server 2007 を実行しているコンピュータでレジストリ値を変更するための適切な権限が必要です。詳細については、「レジストリ キーにアクセス許可を割り当てる」(https://go.microsoft.com/fwlink/?linkid=116137&clcid=0x411) を参照してください。
このジョブの作成方法の例については、「データベース ミラーリングを使用した SharePoint の高可用性に関するケース スタディ (ホワイト ペーパー)」を参照してください。
フェールバック
プリンシパル サーバーにフェールバックするには、データベースを手動でフェールバックする必要があります。フェールバックおよび SQL Server クライアント接続エイリアスのリセットの自動化には、同一の SQL Server ジョブを使用できます。ジョブを実行する前に、ジョブ内の値を変更する必要があります。
まとめ
単一のファーム環境でのミラーリングを構成した後、フェールオーバーおよびフェールバックのための処理、警告、ジョブ、およびスクリプトをテストすることをお勧めします。単一のデータベースをフェールオーバーする場合は、プリンシパル サーバーへのフェールバックを最初に試行してから、その他すべてのデータベースをミラー サーバーにフェールオーバーするようにスクリプトを作成することをお勧めします。
このブックのダウンロード
このトピックは、簡単に読んだり印刷したりできるように、次のダウンロード可能なブックに収められています。
Office SharePoint Server 2007 ファーム内で可用性を計画して構成する
使用できるすべてのドキュメントの一覧については、「Office SharePoint Server 2007 のダウンロード可能なブック」を参照してください。