特定のデータベースはミラー化することも、ログ配布することもできます。また、ミラーリングとログ配布を同時に行うこともできます。 使用する方法を選択するには、次の点を考慮してください。
必要な宛先サーバーの数はいくつですか?
コピー先データベースが 1 つだけ必要な場合は、データベース ミラーリングが推奨されるソリューションです。
複数の宛先データベースが必要な場合は、単独またはデータベース ミラーリングでログ配布を使用する必要があります。 これらの方法を組み合わせることで、データベース ミラーリングの利点と、ログ配布によって提供される複数の宛先のサポートが提供されます。
コピー先データベースのログの復元を遅らせる必要がある場合 (通常は論理エラーから保護するため)、ログ配布を単独で使用するか、データベース ミラーリングを使用します。
このトピックでは、ログ配布とデータベース ミラーリングの組み合わせに関する考慮事項について説明します。
注
これらのテクノロジの概要については、 データベース ミラーリング (SQL Server) と ログ配布について (SQL Server) に関するページを参照してください。
ログ配布とデータベース ミラーリングの組み合わせ
ミラーリング セッションのプリンシパル データベースは、ログ配布の構成でプライマリ データベースとして機能することも、ログ配布バックアップ共有はそのままであるため、その逆としても機能します。 データベース ミラーリング セッションは、同期 (トランザクションの安全性が FULL に設定されている場合) または非同期 (トランザクションの安全性が OFF に設定されている場合) に関係なく、任意の操作モードで実行されます。
注
データベースでデータベース ミラーリングを使用するには、完全復旧モデルが常に必要です。
通常、ログ配布とデータベース ミラーリングを組み合わせると、ログ配布の前にミラーリング セッションが確立されますが、これは必須ではありません。 その後、現在のプリンシパル データベースは、1 つ以上のリモート セカンダリ データベースと共に、ログ配布 プライマリ (プリンシパル/プライマリ データベース) として構成されます。 また、ミラー データベースは、ログ配布プライマリ ( ミラー/プライマリ データベース) として構成する必要があります。 ログ配布セカンダリ データベースは、プリンシパル/プライマリ サーバーまたはミラー/プライマリ サーバーとは異なるサーバー インスタンス上に存在する必要があります。
注
ログ配布に関係するサーバーの大文字と小文字の区別の設定が一致している必要があります。
ログ配布セッション中に、プライマリ データベースのバックアップ ジョブによって、バックアップ フォルダーにログ バックアップが作成されます。 そこから、セカンダリ サーバーのコピー ジョブによってバックアップがコピーされます。 バックアップ ジョブとコピー ジョブを成功させるには、ログ配布バックアップ フォルダーにアクセスできる必要があります。 プライマリ サーバーの可用性を最大化するには、別のホスト コンピューター上の共有バックアップ場所にバックアップ フォルダーを確立することをお勧めします。 ミラー/プライマリ サーバーを含むすべてのログ配布サーバーが、共有バックアップの場所 ( バックアップ共有と呼ばれます) にアクセスできることを確認します。
データベース ミラーリングのフェールオーバー後もログ配布を続行できるようにするには、プリンシパル データベースのプライマリに使用するのと同じ構成を使用して、ミラー サーバーをプライマリ サーバーとして構成する必要もあります。 ミラー データベースが復元状態であるため、バックアップ ジョブがミラー データベースのログをバックアップできなくなります。 これにより、ミラー/プライマリ データベースが、セカンダリ サーバーによってログ バックアップが現在コピーされているプリンシパル/プライマリ データベースに干渉しないようにします。 誤ったアラートを防ぐために、バックアップ ジョブがミラー/プライマリ データベースで実行された後、バックアップ ジョブはメッセージを log_shipping_monitor_history_detail テーブルに記録し、エージェント ジョブは成功の状態を返します。
ミラー/プライマリ データベースは、ログ配布セッションで非アクティブです。 ただし、ミラーリングがフェールオーバーすると、元のミラー データベースがプリンシパル データベースとしてオンラインになります。 その時点で、そのデータベースはログ配布プライマリ データベースとしてもアクティブになります。 以前はそのデータベースでログを出荷できなかったログ配布バックアップジョブで、ログの出荷を開始します。 逆に、フェールオーバーにより、元のプライマリ データベースが新しいミラー データベースになり、復元状態に入ります。そして、そのデータベースのバックアップ ジョブはログのバックアップを停止します。
注
自動フェールオーバーが発生した場合、以前のプリンシパル/プライマリ データベースがミラーリング セッションに再び参加すると、ミラー ロールへの切り替えが発生します。
自動フェールオーバーで高い安全性モードで実行するには、ミラーリング セッションが ミラーリング監視サーバーと呼ばれる追加のサーバー インスタンスで構成されます。 データベースの同期後に何らかの理由でプリンシパル データベースが失われ、ミラー サーバーとミラーリング監視サーバーが相互に通信できる場合は、自動フェールオーバーが発生します。 自動フェールオーバーにより、ミラー サーバーはプリンシパル ロールを引き受け、そのデータベースをプリンシパル データベースとしてオンラインにします。 ログ配布バックアップの場所に新しいプリンシパル/プライマリ サーバーからアクセスできる場合、そのバックアップ ジョブはその場所にログ バックアップの発送を開始します。 データベース ミラーリング同期モードでは、ログ チェーンがミラーリング フェールオーバーの影響を受けず、有効なログのみが復元されることを保証します。 セカンダリ サーバーは、別のサーバー インスタンスがプライマリ サーバーになったことを知らずに、ログ バックアップをコピーし続けます。
ローカル ログ配布モニターを使用する場合、このシナリオに対応するために特別な考慮事項は必要ありません。 このシナリオでリモート監視インスタンスを使用する方法については、このトピックの「リモート監視インスタンスに対するデータベース ミラーリングの影響」を参照してください。
プリンシパルからミラー データベースへのフェールオーバー
次の図は、自動フェールオーバーを使用して高い安全性モードでミラーリングを実行しているときに、ログ配布とデータベース ミラーリングがどのように連携するかを示しています。 最初は、 Server_A はミラーリングのプリンシパル サーバーとログ配布用のプライマリ サーバーの両方です。 Server_B はミラー サーバーであり、プライマリ サーバーとしても構成されており、現在は非アクティブです。 Server_C と Server_D は、ログ配布セカンダリ サーバーです。 ログ配布セッションの可用性を最大化するために、バックアップの場所は別のホスト コンピューター上の共有ディレクトリにあります。
ミラーリング フェールオーバー後、セカンダリ サーバーで定義されているプライマリ サーバー名は変更されません。 .
リモート監視インスタンスに対するデータベース ミラーリングの影響
ログ配布をリモート監視インスタンスと共に使用する場合、ログ配布セッションとデータベース ミラーリングを組み合わせると、モニター テーブル内の情報に影響します。 プライマリに関する情報は、プリンシパル/プライマリで構成されたものと、各セカンダリで構成されているモニターの組み合わせです。
監視を可能な限りシームレスに保つために、リモート モニターを使用する場合は、セカンダリでプライマリを構成するときに元のプライマリ名を指定することをお勧めします。 この方法により、Microsoft SQL Server エージェントからのログ配布構成の変更も容易になります。 監視の詳細については、「ログ配布の監視 (Transact-SQL)」を参照してください。
ミラーリングとログ配布を一緒に設定する
データベース ミラーリングとログ配布を一緒に設定するには、次の手順が必要です。
NORECOVERY を使用してプリンシパル/プライマリ データベースのバックアップを別のサーバー インスタンスに復元し、後でプリンシパル/プライマリ データベースのデータベース ミラーリング ミラー データベースとして使用します。 詳細については、「 ミラーリング用のミラー データベースの準備 (SQL Server)」を参照してください。
データベース ミラーリングを設定します。 詳細については、「 Windows 認証を使用したデータベース ミラーリング セッションの確立 (SQL Server Management Studio) 」または「 データベース ミラーリングのセットアップ (SQL Server)」を参照してください。
プリンシパル/プライマリ データベースのバックアップを他のサーバー インスタンスに復元し、後でプライマリ データベースのログ配布セカンダリ データベースとして使用します。
プリンシパル データベースのログ配布を、1 つ以上のセカンダリ データベースのプライマリ データベースとして設定します。
バックアップ ディレクトリ (バックアップ共有) として 1 つの共有を設定する必要があります。 これにより、プリンシパル サーバーとミラー サーバー間でロールを切り替えた後も、バックアップ ジョブは以前と同じディレクトリに書き込み続けます。 ベスト プラクティスは、この共有が、ミラーリングとログ配布に関係するデータベースをホストしているサーバーとは異なる物理サーバーに配置されるようにすることです。
詳細については、「ログ配布の構成 (SQL Server)」を参照してください。
プリンシパルからミラーに手動でフェールオーバーします。
手動フェールオーバーを実行するには:
新しいプリンシパル (以前はミラー) をプライマリ データベースとしてログ配布を設定します。
重要
セカンダリからセットアップを実行しないでください。
手順 4 で使用したのと同じバックアップ共有を使用する必要があります。
SQL Server Management Studio の トランザクション ログ配布 インターフェイスでは、ログ配布構成ごとに 1 つのプライマリ データベースのみがサポートされます。 そのため、ストアド プロシージャを使用して新しいプリンシパルをプライマリとして設定する必要があります。
手動で別のフェールオーバーを実行し、元の主要システムにフェールバックします。