データベース ミラーリングの構成

適用対象:SQL Server

Note

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに Always On 可用性グループ を使用してください

ミラー データベースを準備した後 (「ミラーリングのためのミラー データベースの準備 (SQL Server)」を参照)、データベース ミラーリング セッションを確立できます。 プリンシパル サーバー、ミラー サーバー、およびミラーリング監視サーバーのインスタンスは、別々のホスト システムにある別々のサーバー インスタンスでなければなりません。

重要

ミラーリングの構成はパフォーマンスに影響する場合があるので、データベース ミラーリングの構成はピーク タイム以外の時間に行うことをお勧めします。

注意

特定のサーバー インスタンスを、同じパートナーまたは別のパートナーを含む複数の同時実行データベース ミラーリング セッションに参加させることができます。 また、サーバー インスタンスを、あるセッションではパートナーとし、別のセッションではミラーリング監視にすることができます。 ミラー サーバー インスタンスでは、プリンシパル サーバー インスタンスと同じエディションの SQL Server が実行されている必要があります。 データベース ミラーリングは、Microsoft SQL Server のすべてのエディションで使用できるわけではありません。 SQL Serverの各エディションでサポートされる機能の一覧については、「 SQL Server 2016 の各エディションがサポートする機能」を参照してください。 また、ワークロードの処理能力が同程度のシステム上で運用することを強くお勧めします。

データベース ミラーリング セッションを確立するには

  1. ミラー データベースを作成します。 詳細については、ミラーリングのためのミラー データベースの準備 (SQL Server) に関するページを参照してください。

  2. 各サーバー インスタンスにセキュリティを設定します。

    データベース ミラーリング セッションの各サーバー インスタンスには、データベース ミラーリング エンドポイントが必要です。 エンドポイントが存在しない場合は、作成する必要があります。

    注意

    サーバー インスタンスによりデータベースのミラーリングに使用される認証の形式は、データベース ミラーリング エンドポイントのプロパティで指定します。 データベース ミラーリングのトランスポートには、Windows 認証と証明書ベースの認証の 2 種類のセキュリティを使用できます。 詳細については、「 データベース ミラーリングと AlwaysOn 可用性グループのトランスポート セキュリティ (SQL Server)」を参照してください。

    各パートナー サーバーで、データベース ミラーリング用のエンドポイントが存在していることを確認します。 サポートするミラーリング セッションの数にかかわらず、サーバー インスタンスではデータベース ミラーリング エンドポイントを 1 つしか持つことができません。 このサーバー インスタンスをデータベース ミラーリング セッションでパートナー専用に使用する場合は、パートナーのロールをエンドポイントに割り当てることができます (ROLE**=**PARTNER)。 また、このサーバーを他のデータベース ミラーリング セッションのミラーリング監視サーバーとしても使用する場合は、エンドポイントのロールを ALL として割り当てます。

    SET PARTNER ステートメントを実行するには、両方のパートナーのエンドポイントの STATE が、STARTED に設定されている必要があります。

    サーバー インスタンスにデータベース ミラーリング エンドポイントがあるかどうかを調べて、そのロールと状態を確認するには、そのインスタンスで、次の Transact-SQL ステートメントを使用します。

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints  
    

    重要

    使用中のデータベース ミラーリング エンドポイントは再構成しないでください。 データベース ミラーリング エンドポイントが存在し、既に使用されている場合、サーバー インスタンスのすべてのセッションでそのエンドポイントを使用することをお勧めします。 使用中のエンドポイントを削除すると、そのエンドポイントが再起動され、既存のセッションの接続が切断される場合があります。この場合、他のサーバー インスタンスからはエラーが発生したように見える可能性があります。 これは、自動フェールオーバーを伴う高い安全性モードでは特に重要です。この場合、パートナーでエンドポイントを再構成すると、フェールオーバーの原因になることがあります。 また、セッションにミラーリング監視サーバーが設定されている場合、データベース ミラーリング エンドポイントを削除すると、そのセッションのプリンシパル サーバーがクォーラムを失う可能性があります。プリンシパル サーバーがクォーラムを失うと、データベースがオフラインになりユーザー接続が切断されます。 詳細については、「クォーラム: データベースの可用性にミラーリング監視が与える影響 (データベース ミラーリング)」を参照してください。

    いずれかのパートナーにエンドポイントがない場合は、「Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)」を参照してください。

  3. サーバー インスタンスが別のドメイン ユーザー アカウントで実行されている場合、それぞれに他方のインスタンスの master データベースのログインが必要になります。 ログインが存在しない場合は、作成する必要があります。 詳細については、「Windows 認証を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する (SQL Server)」を参照してください。

  4. プリンシパル サーバーをミラー データベースのパートナーとして設定するには、ミラー サーバーに接続し、次のステートメントを実行します。

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    <database_name> はミラー化するデータベースの名前 (両方のパートナーで同一の名前にします)、<server_network_address> はプリンシパル サーバーのサーバー ネットワーク アドレスです。

    サーバー ネットワーク アドレスの構文は次のとおりです。

    TCP://<system-address>:<port>

    <<system-address>> は目的のコンピューター システムを明確に指定する文字列です。また、<> はパートナー サーバー インスタンスのミラーリング エンドポイントが使用するポート番号です。 詳細については、「サーバー ネットワーク アドレスの指定 (データベース ミラーリング)」を参照してください。

    たとえば、ミラーリング サーバー インスタンスで、次の ALTER DATABASE ステートメントは元のプリンシパル サーバー インスタンスとしてパートナーを設定します。 データベース名は AdventureWorks、システムのアドレスは DBSERVER1 (パートナーのシステム名)、パートナーのデータベース ミラーリング エンドポイントが使用するポートは 7022 です。

    ALTER DATABASE AdventureWorks   
       SET PARTNER = 'TCP://DBSERVER1:7022'  
    

    このステートメントを実行すると、プリンシパル サーバーからの接続時にミラー サーバーにセッションを確立する準備が整います。

  5. ミラー サーバーをプリンシパル データベースのパートナーとして設定するには、プリンシパル サーバーに接続し、次のステートメントを実行します。

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    詳細については、手順 4. を参照してください。

    たとえば、プリンシパル サーバー インスタンスで、次の ALTER DATABASE ステートメントは元のミラー サーバー インスタンスとしてパートナーを設定します。 データベース名は AdventureWorks、システムのアドレスは DBSERVER2 (パートナーのシステム名)、パートナーのデータベースのミラーリング エンドポイントが使用するポートは 7025 です。

    ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER2:7022'  
    

    プリンシパル サーバーでこのステートメントを入力すると、データベース ミラーリング セッションが開始されます。

  6. 既定ではセッションでのトランザクションの安全性が "完全" に設定され (SAFETY が FULL に設定された状態)、同期セッションが自動フェールオーバーを伴わない高い安全性モードで開始されます。 セッションは、次のように自動フェールオーバーを伴う高い安全性モードか、非同期の高パフォーマンス モードで実行するように再構成できます。

Note

次の例では、既存のミラー データベースのためにパートナー間にデータベース ミラーリング セッションを確立します。 ミラー データベースを作成する方法の詳細については、「ミラーリングのためのミラー データベースの準備 (SQL Server)」を参照してください。

ミラーリング監視サーバーを使用せずにデータベース ミラーリング セッションを作成するための基本的な手順を示します。 2 つのパートナーは、2 台のコンピューター システムにある既定のサーバー インスタンスです (PARTNERHOST1 および PARTNERHOST5)。 2 つのパートナー インスタンスは、同一の Windows ドメイン ユーザー アカウント (MYDOMAIN\dbousername) で実行されます。

  1. プリンシパル サーバー インスタンス (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 認証を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する (SQL Server)」を参照してください。

  2. ミラー サーバー インスタンス (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.  
    
  3. プリンシパル サーバー インスタンス (PARTNERHOST1) で、データベースをバックアップします。

    BACKUP DATABASE AdventureWorks   
        TO DISK = 'C:\AdvWorks_dbmirror.bak'   
        WITH FORMAT  
    GO  
    
  4. ミラー サーバー インスタンス ( PARTNERHOST5) で、データベースを復元します。

    RESTORE DATABASE AdventureWorks   
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak'   
        WITH NORECOVERY  
    GO  
    
  5. 完全データベース バックアップを作成した後、プリンシパル データベースでログ バックアップを作成する必要があります。 たとえば、次の Transact-SQL ステートメントは、前回の完全データベース バックアップで使用したものと同じファイルにログをバックアップします。

    BACKUP LOG AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
    GO  
    
  6. ミラーリングを開始する前に、必要なログ バックアップ (および、それ以降のログ バックアップ) を適用する必要があります。

    たとえば、次の Transact-SQL ステートメントは C:\AdventureWorks.bak から最初のログを復元します。

    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\ AdventureWorks.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. ミラー サーバー インスタンスで、PARTNERHOST1 のサーバー インスタンスをパートナーとして設定します (初期プリンシパル サーバーにします)。

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER =   
        'TCP://PARTNERHOST1:7022'  
    GO  
    

    重要

    既定でデータベース ミラーリング セッションは、トランザクションの安全性が「完全」に設定された (SAFETY が FULL に設定された) 状態の同期モードで実行されます。 セッションを非同期の高パフォーマンス モードで実行するには、SAFETY を OFF にします。 詳しくは、「 Database Mirroring Operating Modes」をご覧ください。

  8. プリンシパル サーバー インスタンスで、 PARTNERHOST5 のサーバー インスタンスをパートナーとして設定します (初期ミラー サーバーにします)。

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://PARTNERHOST5:7022'  
    GO  
    
  9. 自動フェールオーバーを伴う高い安全性モードを使用する場合、必要に応じてミラーリング監視サーバー インスタンスを設定します。 詳細については、「Windows 認証の使用によるデータベースのミラーリング監視の追加 (Transact-SQL)」を参照してください。

Note

セキュリティの設定、ミラー データベースの準備、パートナーの設定、およびミラーリング監視サーバーの追加をすべて含む例については、「データベース ミラーリングの設定 (SQL Server)」を参照してください。

参照

データベース ミラーリングの設定 (SQL Server)
ALTER DATABASE (Transact-SQL)
Windows 認証を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する (SQL Server)
ミラーリングのためのミラー データベースの準備 (SQL Server)
Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)
データベース ミラーリングとログ配布 (SQL Server)
データベース ミラーリング (SQL Server)
データベース ミラーリングとレプリケーション (SQL Server)
データベース ミラーリングの設定 (SQL Server)
サーバー ネットワーク アドレスの指定 (データベース ミラーリング)
Database Mirroring Operating Modes