Windows 認証を使用してデータベース ミラーリング セッションを確立する方法 (Transact-SQL)
ミラー データベースを準備した後 (「ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)」を参照)、データベース ミラーリング セッションを確立できます。プリンシパル サーバー、ミラー サーバー、およびミラーリング監視サーバーのインスタンスは、別々のホスト システムにある別々のサーバー インスタンスでなければなりません。
重要 : |
---|
ミラーリングの構成はパフォーマンスに影響する場合があるので、データベース ミラーリングの構成はピーク タイム以外の時間に行うことをお勧めします。 |
メモ : |
---|
特定のサーバー インスタンスを、同じパートナーまたは別のパートナーを含む複数の同時実行データベース ミラーリング セッションに参加させることができます。また、サーバー インスタンスを、あるセッションではパートナーとし、別のセッションではミラーリング監視にすることができます。ミラー サーバー インスタンスでは、プリンシパル サーバー インスタンスと同じ SQL Server のエディション (Standard Edition または Enterprise Edition) を実行している必要があります。また、これらのインスタンスは同じワークロードを処理できる同等のシステムで実行することも強くお勧めします。 |
データベース ミラーリング セッションを確立するには
ミラー データベースを作成します。詳細については、「ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)」を参照してください。
各サーバー インスタンスにセキュリティを設定します。
データベース ミラーリング セッションの各サーバー インスタンスには、データベース ミラーリング エンドポイントが必要です。エンドポイントが存在しない場合は、作成する必要があります。
メモ : サーバー インスタンスによりデータベースのミラーリングに使用される認証の形式は、データベース ミラーリング エンドポイントのプロパティで指定します。データベース ミラーリングのトランスポートには、Windows 認証と証明書ベースの認証の 2 種類のセキュリティを使用できます。詳細については、「データベース ミラーリング トランスポート セキュリティ」を参照してください。 各パートナー サーバーで、データベース ミラーリング用のエンドポイントが存在していることを確認します。サポートするミラーリング セッションの数にかかわらず、サーバー インスタンスではデータベース ミラーリング エンドポイントを 1 つしか持つことができません。このサーバー インスタンスをデータベース ミラーリング セッションでパートナー専用に使用する場合は、パートナーのロールをエンドポイントに割り当てることができます (ROLE**=**PARTNER)。また、このサーバーを他のデータベース ミラーリング セッションのミラーリング監視サーバーとしても使用する場合は、エンドポイントのロールを ALL として割り当てます。
SET PARTNER ステートメントを実行するには、両方のパートナーのエンドポイントの STATE を STARTED に設定する必要があります。
サーバー インスタンスにデータベース ミラーリング エンドポイントがあるかどうかを調べて、そのロールと状態を確認するには、そのインスタンスで、次の Transact-SQL ステートメントを使用します。
SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
重要 : 使用中のデータベース ミラーリング エンドポイントは再構成しないでください。データベース ミラーリング エンドポイントが存在し、既に使用されている場合、サーバー インスタンスのすべてのセッションでそのエンドポイントを使用することをお勧めします。使用中のエンドポイントを削除すると、そのエンドポイントが再起動され、既存のセッションの接続が切断される場合があります。この場合、他のサーバー インスタンスからはエラーが発生したように見える可能性があります。これは、自動フェールオーバーを伴う高い安全性モードでは特に重要です。この場合、パートナーでエンドポイントを再構成すると、フェールオーバーの原因になることがあります。また、セッションにミラーリング監視サーバーが設定されている場合、データベース ミラーリング エンドポイントを削除すると、そのセッションのプリンシパル サーバーがクォーラムを失う可能性があります。プリンシパル サーバーがクォーラムを失うと、データベースがオフラインになりユーザー接続が切断されます。詳細については、「クォーラム : データベースの可用性にミラーリング監視サーバーが与える影響」を参照してください。 どのパートナーにもエンドポイントがない場合は、「Windows 認証でミラーリング エンドポイントを作成する方法 (Transact-SQL)」を参照してください。
サーバー インスタンスが別のドメイン ユーザー アカウントで実行されている場合、それぞれに他方のインスタンスの master データベースのログインが必要になります。ログインが存在しない場合は、作成する必要があります。詳細については、「Windows 認証を使用してデータベース ミラーリング ネットワーク アクセスを許可する方法 (Transact-SQL)」を参照してください。
プリンシパル サーバーをミラー データベースのパートナーとして設定するには、ミラー サーバーに接続し、次のステートメントを実行します。
ALTER DATABASE <database_name> SET PARTNER =<server_network_address>
<database_name> はミラー化するデータベースの名前 (両方のパートナーで同一の名前にします)、<server_network_address> はプリンシパル サーバーのサーバー ネットワーク アドレスです。
サーバー ネットワーク アドレスの構文は次のとおりです。
TCP**://<system-address>:**<port>
<system-address> は目的のコンピュータ システムを明確に指定する文字列です。また、<port> はパートナー サーバー インスタンスのミラーリング エンドポイントが使用するポート番号です。詳細については、「サーバー ネットワーク アドレスの指定 (データベース ミラーリング)」を参照してください。
たとえば、ミラーリング サーバー インスタンスで、次の ALTER DATABASE ステートメントは元のプリンシパル サーバー インスタンスとしてパートナーを設定します。データベース名は AdventureWorks、システムのアドレスは DBSERVER1 (パートナーのシステム名)、パートナーのデータベース ミラーリング エンドポイントが使用するポートは 7022 です。
ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER1:7022'
このステートメントを実行すると、プリンシパル サーバーからの接続時にミラー サーバーにセッションを確立する準備が整います。
ミラー サーバーをプリンシパル データベースのパートナーとして設定するには、プリンシパル サーバーに接続し、次のステートメントを実行します。
ALTER DATABASE <database_name> SET PARTNER =<server_network_address>
詳細については、手順 4. を参照してください。
たとえば、プリンシパル サーバー インスタンスで、次の ALTER DATABASE ステートメントは元のミラー サーバー インスタンスとしてパートナーを設定します。データベース名は AdventureWorks、システムのアドレスは DBSERVER2 (パートナーのシステム名)、パートナーのデータベースのミラーリング エンドポイントが使用するポートは 7025 です。
ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER2:7022'
プリンシパル サーバーでこのステートメントを入力すると、データベース ミラーリング セッションが開始されます。
既定ではセッションでのトランザクションの安全性が「完全」に設定され (SAFETY が FULL に設定された状態)、同期セッションが自動フェールオーバーを伴わない高い安全性モードで開始されます。セッションは、次のように自動フェールオーバーを伴う高い安全性モードか、非同期の高パフォーマンス モードで実行するように再構成できます。
- 自動フェールオーバーを伴う高い安全性モード
自動フェールオーバーをサポートするために高い安全性モードでセッションを実行する場合は、ミラーリング監視サーバー インスタンスを追加します。詳細については、「Windows 認証を使用してデータベースのミラーリング監視を追加する方法 (Transact-SQL)」を参照してください。 - 高パフォーマンス モード
自動フェールオーバーを行わず、高可用性よりパフォーマンスを重視する場合は、トランザクションの安全性を無効にします。詳細については、「データベース ミラーリング セッションでトランザクションの安全性を変更する方法 (Transact-SQL)」を参照してください。メモ : 高パフォーマンス モードでは、WITNESS を OFF に設定してください。詳細については、「クォーラム : データベースの可用性にミラーリング監視サーバーが与える影響」を参照してください。
- 自動フェールオーバーを伴う高い安全性モード
使用例
メモ : |
---|
次の例では、既存のミラー データベースのためにパートナー間にデータベース ミラーリング セッションを確立します。ミラー データベースの作成については、「ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)」を参照してください。 |
ミラーリング監視サーバーを使用せずにデータベース ミラーリング セッションを作成するための基本的な手順を示します。2 つのパートナーは、2 台のコンピュータ システムにある既定のサーバー インスタンスです (PARTNERHOST1 および PARTNERHOST5)。2 つのパートナー インスタンスは、同一の Windows ドメイン ユーザー アカウント (MYDOMAIN\dbousername) で実行されます。
メモ : |
---|
セキュリティの設定、ミラー データベースの準備、パートナーの設定、およびミラーリング監視サーバーの追加を網羅した例については、「データベース ミラーリングの設定」を参照してください。 |
プリンシパル サーバー インスタンス (PARTNERHOST1 の既定のインスタンス) で、ポート 7022 を使用するすべてのロールをサポートするエンドポイントを作成します。
--create an endpoint for this instance CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=ALL) GO --Partners under same domain user; login already exists in master.
メモ : ログインの設定方法の例については、「Windows 認証を使用してデータベース ミラーリング ネットワーク アクセスを許可する方法 (Transact-SQL)」を参照してください。 ミラー サーバー インスタンス (PARTNERHOST5 の既定のインスタンス) で、ポート 7022 を使用するすべてのロールをサポートするエンドポイントを作成します。
--create an endpoint for this instance CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=ALL) GO --Partners under same domain user; login already exists in master.
プリンシパル サーバー インスタンス (PARTNERHOST1) で、データベースをバックアップします。
BACKUP DATABASE AdventureWorks TO DISK = 'C:\AdvWorks_dbmirror.bak' WITH FORMAT GO
ミラー サーバー インスタンス (
PARTNERHOST5
) で、データベースを復元します。RESTORE DATABASE AdventureWorks FROM DISK = 'Z:\AdvWorks_dbmirror.bak' WITH NORECOVERY GO
完全データベース バックアップを作成した後、プリンシパル データベースでログ バックアップを作成する必要があります。たとえば、次の Transact-SQL ステートメントは、前回の完全データベース バックアップで使用したものと同じファイルにログをバックアップします。
BACKUP LOG AdventureWorks TO DISK = 'C:\AdventureWorks.bak' GO
ミラーリングを開始する前に、必要なログ バックアップ (および、それ以降のログ バックアップ) を適用する必要があります。
たとえば、次の Transact-SQL ステートメントは C:\AdventureWorks.bak から最初のログを復元します。RESTORE LOG AdventureWorks FROM DISK = 'C:\ AdventureWorks.bak' WITH FILE=1, NORECOVERY GO
ミラー サーバー インスタンスで、PARTNERHOST1 のサーバー インスタンスをパートナーとして設定します (初期プリンシパル サーバーにします)。
ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://PARTNERHOST1:7022' GO
重要 : 既定でデータベース ミラーリング セッションは、トランザクションの安全性が「完全」に設定された (SAFETY が FULL に設定された) 状態の同期モードで実行されます。セッションを非同期の高パフォーマンス モードで実行するには、SAFETY を OFF にします。詳細については、「データベース ミラーリング セッション」および「データベース ミラーリング セッションでトランザクションの安全性を変更する方法 (Transact-SQL)」を参照してください。 プリンシパル サーバー インスタンスで、
PARTNERHOST5
のサーバー インスタンスをパートナーとして設定します (初期ミラー サーバーにします)。ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://PARTNERHOST5:7022' GO
自動フェールオーバーを伴う高い安全性モードを使用する場合、必要に応じてミラーリング監視サーバー インスタンスを設定します。詳細については、「Windows 認証を使用してデータベースのミラーリング監視を追加する方法 (Transact-SQL)」を参照してください。
メモ : |
---|
セキュリティの設定、ミラー データベースの準備、パートナーの設定、およびミラーリング監視サーバーの追加を網羅した例については、「データベース ミラーリングの設定」を参照してください。 |
参照
処理手順
Windows 認証を使用してデータベース ミラーリング ネットワーク アクセスを許可する方法 (Transact-SQL)
ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)
Windows 認証でミラーリング エンドポイントを作成する方法 (Transact-SQL)
概念
自動フェールオーバー
データベース ミラーリング セッション
データベース ミラーリングとログ配布
データベース ミラーリングの概要
レプリケーションおよびデータベース ミラーリング
サーバー ネットワーク アドレスの指定 (データベース ミラーリング)
Transact-SQL の設定とデータベース ミラーリングの動作モード
その他の技術情報
ALTER DATABASE (Transact-SQL)
データベース ミラーリングの設定