注
この機能は、今後のバージョンの Microsoft SQL Server で削除される予定です。 新しい開発作業ではこの機能を使用しないでください。現在この機能を使用しているアプリケーションを変更することを計画してください。 代わりにAlways On可用性グループを使用します。
ミラー データベースの準備が完了したら (ミラー 化用ミラー データベースの準備 (SQL Server) を参照)、データベース ミラーリング セッションを確立できます。 プリンシパル、ミラー、およびウィットネス サーバーのインスタンスは、それぞれ個別のサーバーとして、別々のホストシステム上に配置する必要があります。
重要
ミラーリングを構成するとパフォーマンスに影響を与える可能性があるため、ピーク時間外にデータベース ミラーリングを構成することをお勧めします。
注
特定のサーバー インスタンスは、同じまたは異なるパートナーとの複数の同時データベース ミラーリング セッションに参加できます。 サーバー インスタンスは、あるセッションではパートナーとして、別のセッションでは証人として役割を果たすことができます。 ミラー サーバー インスタンスは、プリンシパル サーバー インスタンスと同じエディションの SQL Server を実行している必要があります。 データベース ミラーリングは、MicrosoftSQL Server のすべてのエディションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2014 の各エディションでサポートされる機能」を参照してください。 また、同じワークロードを処理できる同等のシステムで実行することを強くお勧めします。
データベース ミラーリング セッションを確立するには
ミラー データベースを作成します。 詳細については、「 ミラーリング用のミラー データベースの準備 (SQL Server)」を参照してください。
各サーバー インスタンスにセキュリティを設定します。
データベース ミラーリング セッションの各サーバー インスタンスには、データベース ミラーリング エンドポイントが必要です。 エンドポイントが存在しない場合は、エンドポイントを作成する必要があります。
注
サーバー インスタンスによるデータベース ミラーリングに使用される認証の形式は、データベース ミラーリング エンドポイントのプロパティです。 データベース ミラーリングには、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)」を参照してください。
サーバー インスタンスが異なるドメイン ユーザー アカウントで実行されている場合は、それぞれが他のユーザーの マスター データベースにログインする必要があります。 ログインが存在しない場合は、ログインを作成する必要があります。 詳細については、「 Windows 認証 (SQL Server) を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する」を参照してください。
プリンシパル サーバーをミラー データベースのパートナーとして設定するには、ミラー サーバーに接続し、次のステートメントを発行します。
ALTER DATABASE <database_name> SET PARTNER =<server_network_address>(データベース <database_name> をパートナー =<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 に設定する必要があります。 詳細については、「クォーラム: ミラーリング監視サーバーがデータベースの可用性に与える影響 (データベース ミラーリング)」を参照してください。
例
注
次の例では、既存のミラー データベースのパートナー間でデータベース ミラーリング セッションを確立します。 ミラー データベースの作成の詳細については、「ミラーリング 用のミラー データベースの準備 (SQL Server)=」を参照してください。
この例では、証人なしでデータベース ミラーリング セッションを作成するための基本的なステップを示しています。 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 認証 (SQL Server) を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する」を参照してください。
ミラー サーバー インスタンス (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上のサーバー インスタンスをパートナーとして設定します (初期プリンシパル サーバーにします)。
USE master; GO ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://PARTNERHOST1:7022' GO重要
既定では、データベース ミラーリング セッションは同期モードで実行されます。これは、完全なトランザクションセーフ (SAFETY が FULL に設定されている) に依存します。 非同期のハイ パフォーマンス モードでセッションを実行するには、SAFETY を OFF に設定します。 詳細については、「 データベース ミラーリングの動作モード」を参照してください。
プリンシパル サーバー インスタンスで、
PARTNERHOST5上のサーバー インスタンスをパートナーとして設定します (初期ミラー サーバーにします)。USE master; GO ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://PARTNERHOST5:7022' GO必要に応じて、自動フェールオーバーで高度安全モードを使用する場合は、証人サーバー インスタンスを設定します。 詳細については、「 Windows 認証を使用したデータベース ミラーリング監視サーバーの追加 (Transact-SQL)」を参照してください。
注
セキュリティのセットアップ、ミラー データベースの準備、パートナーのセットアップ、ミラーリング監視サーバーの追加を示す完全な例については、「 データベース ミラーリングのセットアップ (SQL Server)」を参照してください。
こちらもご覧ください
データベース ミラーリングの設定 (SQL Server)
ALTER DATABASE (Transact-SQL)
Windows 認証を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する (SQL Server)
ミラーリングのためのミラー データベースの準備 (SQL Server)
Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)
データベース ミラーリングとログ配布 (SQL Server)
データベース ミラーリング (SQL Server)
データベース ミラーリングとレプリケーション (SQL Server)
データベース ミラーリングの設定 (SQL Server)
サーバー ネットワーク アドレスの指定 (データベース ミラーリング)
データベース ミラーリングの動作モード