非ドメイン環境上のサーバー間でミラーリングを構築する方法について

 

皆さん、こんにちは。 今回は、非ドメイン環境上のマシン間で プリンシパル、ミラーの2台構成のミラーリングを構築する方法 (SQL Server 2008 R2) について紹介したいと思います。

まず、重要なポイントとして、一般的に 非ドメイン環境上のサーバー間でミラーリングを構築する場合には、エンドポイント間の通信を行うために、証明書を使用する必要があります。

今回は、証明書を使用した プリンシパル、ミラーの2台構成のミラーリング構築手順 について、見ていきましょう。

 

プリンシパル サーバー側 作業 (発信接続設定)

 

A1) データベース マスター キーを作成します。

---
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Passw@rd1';
GO
---

※ "PASSWORD" には任意のパスワードを指定します。

 

A2) 証明書(プリンシパル) を作成します。

---
CREATE CERTIFICATE ss2008r2p_cert
WITH SUBJECT = 'ss2008r2p certificate for database mirroring',START_DATE = '06/01/2013',EXPIRY_DATE = '06/01/2023';
GO
---

※ 証明書名 (例: "ss2008r2p_cert") は、任意の名前を指定します。

 

A3) エンドポイントを作成します。

---
CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP (LISTENER_PORT=5022, LISTENER_IP=(192.168.1.1)) FOR DATABASE_MIRRORING (AUTHENTICATION = CERTIFICATE ss2008r2p_cert,ENCRYPTION = REQUIRED ALGORITHM RC4,ROLE = ALL);
GO
---

※ "LISTENER_IP" には、プリンシパルマシンの IP アドレスを指定します。
※ "LISTENER_PORT" には、任意のポート指定します。

 

A4) A2) で作成した証明書を任意の場所にバックアップします。

---
BACKUP CERTIFICATE ss2008r2p_cert TO FILE = 'C:\TEMP\ss2008r2p_cert.cer';
GO
---

A5) A4) で作成した証明書のバックアップを、ミラー側の任意の場所にコピーします。

 

ミラー サーバー側 作業 (発信接続設定)

 

B1) データベース マスター キーを作成します。

---
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Passw@rd1';
GO
---

※ "PASSWORD" には任意のパスワードを指定します。

 

B2) 証明書(ミラー)を作成します。

---
CREATE CERTIFICATE ss2008r2m_cert
WITH SUBJECT = 'ss2008r2m certificate for database mirroring',START_DATE = '06/01/2013',EXPIRY_DATE = '06/01/2023';
GO
---

B3) エンドポイントを作成します。

---
CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP (LISTENER_PORT=5022, LISTENER_IP=(192.168.1.2)) FOR DATABASE_MIRRORING (AUTHENTICATION = CERTIFICATE ss2008r2m_cert,ENCRYPTION = REQUIRED ALGORITHM RC4,ROLE = ALL);
GO
---

※ "LISTENER_IP" には、ミラーマシンの IP アドレスを指定します。
※ "LISTENER_PORT" には、任意のポートを指定します。

 

B4) B3) で作成した証明書を任意の場所にバックアップします。

---
BACKUP CERTIFICATE ss2008r2m_cert TO FILE = 'C:\TEMP\ss2008r2m_cert.cer';
GO
---

B5) B4) で作成した証明書のバックアップを、プリンシパル側の任意の場所にコピーします。

 

 

プリンシパル サーバー側 作業 (着信設定)

 

C1) ミラー着信用の新規ログイン 及び ユーザーを作成します。

---
CREATE LOGIN ss2008r2m WITH PASSWORD = 'Passw@rd1';
CREATE USER ss2008r2m FOR LOGIN ss2008r2m;
---

※ "PASSWORD" には任意のパスワードを指定します。

 

C2) C1) で作成したユーザーと証明書の関連付けを行ないます。

---
CREATE CERTIFICATE ss2008r2m_cert
AUTHORIZATION ss2008r2m
FROM FILE = 'C:\TEMP\ss2008r2m_cert.cer';
GO
---

※ “FILE” には、B5) でコピーした、ミラー サーバー側の証明書のバックアップファイルを指定します。

 

C3) エンドポイントに対する接続権限を付与します。

---
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO ss2008r2m;
GO
---

 

 

ミラー サーバー側 作業 (着信設定)

 

D1) プリンシパル着信用の新規ログイン及びユーザーを作成します。

---
CREATE LOGIN ss2008r2p WITH PASSWORD = 'Passw@rd1';
CREATE USER ss2008r2p FOR LOGIN ss2008r2p;
---

※ "PASSWORD" には任意のパスワードをご指定下さい。

 

D2) D1) で作成したユーザーと証明書の関連付けを行ないます。

---
CREATE CERTIFICATE ss2008r2p_cert
AUTHORIZATION ss2008r2p
FROM FILE = 'C:\TEMP\ss2008r2p_cert.cer';
GO
---

※ “FILE” には、A5) でコピーした、ミラー サーバー側の証明書のバックアップファイルを指定します。

 

D3) エンドポイントに対する接続権限を付与します。

---
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO ss2008r2p;
GO
---

 

 

プリンシパル サーバー側 作業 (バックアップ)

 

E1) ミラーリング対象データベースの完全バックアップ 及び トランザクションログ バックアップを採取します。
E2) E1) にて採取したバックアップを、ミラー側の任意の場所にコピーします。

 

 

ミラー サーバー側 作業 (リストア)

 

F1) E2) でコピーしてきたバックアップファイルを使用し、ミラーリング対象のデータベースを RESTORE WITH NORECOVERY で復元します。

 

※ E1)、E2) 及び F1) の詳細な手順については、以下の URL を参照下さい。

ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)
< https://msdn.microsoft.com/ja-jp/library/ms189047(v=sql.105).aspx>

 

 

ミラー サーバー側 作業 (ミラーリング開始)

 

G1) ミラーリング開始コマンドを実行します。

---
ALTER DATABASE <ミラーリング対象データベース名> SET PARTNER = 'tcp://192.168.1.1:5022'
---

 

※ "PARTNER" には、プリンシパル サーバーの IP アドレス 及び プリンシパル サーバーでエンドポイント作成時に "LISTENER_PORT" に指定したポート番号 を指定します。

 

 

プリンシパル サーバー側 作業 (ミラーリング開始)

 

H1) ミラーリング開始コマンドを実行します。

---
ALTER DATABASE <ミラーリング対象データベース名> SET PARTNER = 'tcp://192.168.1.2:5022'
---

※ "PARTNER" には、ミラー サーバーの IP アドレス 及び ミラー サーバーでエンドポイント作成時に "LISTENER_PORT" に指定したポート番号 を指定します。

 

H1) 手順を実施後、コマンドが正常に完了し、プリンシパル サーバー側の ミラーリング対象のデータベースのステータスが、”プリンシパル、同期済み” になれば、正常にミラーリングの構築が完了したと判断できます。

 

Mirror

 

 

また、今回構築したミラーリング環境を再構築するため、今回構築したミラーリング環境を削除する場合は、以下の手順で削除が可能です。

 

プリンシパル サーバー側 削除作業

 

-- ミラーリング削除

USE master
GO
ALTER DATABASE <ミラーリング対象データベース名> SET PARTNER OFF;
GO

-- A3) で作成したエンドポイント削除

USE master
GO
DROP ENDPOINT  Endpoint_Mirroring;
GO

 

-- A2)、C2) で作成した証明書削除

USE master
GO
DROP CERTIFICATE ss2008r2p_cert;
GO
DROP CERTIFICATE ss2008r2m_cert;
GO

 

-- C1) で作成した ログイン、データベース ユーザー削除

USE master
GO
DROP USER ss2008r2m;
GO
DROP LOGIN ss2008r2m;
GO

 

 

ミラー サーバー側 削除作業

 

-- B3) で作成したエンドポイント削除

USE master
GO
DROP ENDPOINT  Endpoint_Mirroring;
GO

 

-- B2)、D2) で作成した証明書削除

USE master
GO
DROP CERTIFICATE ss2008r2m_cert;
GO
DROP CERTIFICATE ss2008r2p_cert;
GO

 

-- D1) で作成した ログイン、データベース ユーザー削除

USE master
GO
DROP USER ss2008r2p;
GO
DROP LOGIN ss2008r2p;
GO

 

 

今回は、SQL Server 2008 R2 における 非ドメイン環境上のサーバー間で プリンシパル、ミラーの2台構成のミラーリングを構築する方法について紹介しましたが、他のSQL Server のバージョン (SQL Server 2005、2008、2012 など) でも同様の手順で構築することが可能です。

また、もっと ミラーリング機能のついて知りたいという方、非ドメイン環境上のサーバー間で 監視サーバー (ウィットネス) を含む 3台構成のミラーリングを構築してみたいと思われる方は、 SQL Server 2008 R2 自習書シリーズ (データベース ミラーリング入門) や、 徹底検証シリーズ (SQL Server 2005 データベース ミラーリング検証) をご参照して頂ければと思います。

 

[参考情報]

証明書を使用したデータベース ミラーリングの設定の例 (Transact-SQL)