1. ホーム
  2. データベース
  3. mssql2008

SQL Server 2008 R2 データベースミラーリング導入マニュアル(デュアルコンピュータ) SQL Server 2014 も適用可能です。

2022-01-20 13:32:15

I. プライマリーマシン、セカンダリーマシンの設定

1. サーバーの基本情報

ホスト名は HOST_A、IPアドレスは 192.168.1.155

バックアップマシン名は HOST_B、IPアドレスは 192.168.1.156

II. マスターとバックアップインスタンスの相互運用性

相互運用を実現するためには、ドメインでも証明書でも構いませんが、以下は簡単のため、証明書による方法とします。注)quot;プライマリおよびスタンバイデータベースインスタンス相互運用"の操作は一度だけ行えばよく、例えば、2つのSQL Server 2008インスタンスで5つのデータベースをミラーリングする場合、以下の操作を一度だけ行えばよい。あるいは、プライマリとスタンバイインスタンスの各組(データベースではない)について相互運用を一度行う、と理解すればよいでしょう。

1. 証明書の作成(マスターとスタンバイは並列実行可)

--host executes.
USE master; 
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456'; 
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' , 
START_DATE = '2012-08-02', 
EXPIRY_DATE = '2099-08-02'; 

-- The standby machine executes.

USE master; 
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456'; 
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate', 
START_DATE = '2012-08-02', 
EXPIRY_DATE = '2099-08-02'; 

2. 接続されたエンドポイントを作成する(プライマリとセカンダリは並列に実行可能です)

-- Host executes. 

CREATE ENDPOINT Endpoint_Mirroring 

STATE = STARTED 

AS 

TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 

FOR 

DATABASE_MIRRORING 

( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); 

 

-- The standby machine executes.

CREATE ENDPOINT Endpoint_Mirroring 

STATE = STARTED 

AS 

TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 

FOR 

DATABASE_MIRRORING 

( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

3. 相互接続作成用バックアップ証明書(マスターとバックアップを並行して実行可能)

-- Host executes.

BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\SQLBackup\HOST_A_cert.cer'; 


-- The backup machine executes.

BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\SQLBackup\HOST_B_cert.cer';

4. 互換性のある証明書

C:³³³にバックアップされた証明書を入れ替え、バックアップマシンのC:³³³にHOST_A_cert.cerをコピーします。HOST_A_cert.cerをバックアップマシンのC:⇄SQLBackupに、HOST_B_cert.cerをホストマシンのC:³³にコピーします。

5. ログイン名とユーザーの追加(マスターとスタンバイの並列実行が可能です)

以下の操作は、コマンドラインからのみ実行可能で、GUIからは実行できません。(SQL Server 2005時点のパッチ番号SP2)。

-- Host execution.
CREATE LOGIN HOST_B_login WITH PASSWORD = '123456'; 
CREATE USER HOST_B_user FOR LOGIN HOST_B_login; 
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\SQLBackup\HOST_B_cert.cer'; 
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; 
 
-- The standby machine executes.
CREATE LOGIN HOST_A_login WITH PASSWORD = '123456'; 
CREATE USER HOST_A_user FOR LOGIN HOST_A_login; 
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'C:\SQLBackup\HOST_A_cert.cer'; 
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; 

III. ミラー関係の確立

以下の手順は、データベースごとに行います。例えば、既存のホストに5つのデータベースがある場合、以下の手順を5回行う必要があります。

1. 手動によるログインとパスワードの同期

前述したデータベースミラーリングの欠点は、ログインをメンテナンスできないことなので、手動でメンテナンスする必要があります。

通常、データベースにはアクセスユーザーとして複数のユーザーが存在し、データベースには対応するログイン名が存在するが、待機機には対応するログイン名が存在しない。このような状況を「孤立したユーザー(isolated user)」と呼びます。ホストとスタンバイのデータベースで、同じユーザー名とパスワードを作成することができます。

2. スタンバイデータベースの準備(ホストのバックアップとイメージの復元)

ホスト上のデータベースをフルバックアップし、その後ログトランザクションバックアップを行います。

1. マスターデータのバックアップは、以下のようにフルモードに設定する必要があります。

  上の画像のquot;Full mode"をquot;Recovery mode"にします。

2. 以下のように、データベースをバックアップします。

バックアップを行う際は、[バックアップの種類]に「フル」を選択してください。

3. トランザクションログを以下のようにバックアップします。

バックアップの種類で「トランザクション・ログ」を選択し、バックアップ・ディレクトリをバックアップ・データベース・ディレクトリと同じにします。

ホストマシンのフルバックアップを使用してバックアップマシンのバックアップファイルをリストアし、データのリストアは "with non recover" を使用します。図に示すように

正常に実行されると、データベースは次のようになります。

3. ミラーを作成する

-- Execute the following statement in the standby machine.

ALTER DATABASE shishan SET PARTNER = 'TCP://192.168.1.155:5022';

Note: shishan is the database name, which needs to be modified according to the actual. 192.168.1.155 is the host IP address, which needs to be modified according to the actual.

--Host executes.

ALTER DATABASE shishan SET PARTNER = 'TCP://192.168.1.156:5022'; 


注:shishanはデータベース名で、実際の運用に合わせて変更する必要があります。192.168.1.156はバックアップマシンのIPアドレスで、実際の運用に合わせて変更する必要があります。

実行に成功したら

この時点で、SQLイメージのホットスタンバイ構成は完了です。

IV. 共通コマンド

-- switch between master and standby 
use master;
alter database testdb set partner failover;
 
-- Forced switchover of the standby
use master;
alter database testdb set partner force_service_allow_data_loss;
 
--restore mirror
use master;
alter database testdb set partner resume;
 
 
--un-witness server
ALTER DATABASE testdb SET WITNESS OFF ;
 
--unmirror
ALTER DATABASE testdb SET PARTNER OFF;
 
--set mirror database restore to normal
RESTORE DATABASE testdb WITH RECOVERY;

セクタサイズの異なるHDDにデータベースをバックアップする場合、以下のステートメントを実行することで、プライマリデータベースをバックアップすることができます。
BACKUP DATABASE MyDB TO DISK = N'D:\MyDB.bak' WITH INIT , NOUNLOAD , NAME = N'MyDB backup', STATS = 10, FORMAT

概要

上記のsqlサーバーのミラーリング設定を行うには、sqlサーバーの構成マネージャを使用して、以下のようにTCP/IPプロトコルを有効にする必要があります。

TCP/IPプロトコルが有効でない場合、ミラーリングは同じネットワークセグメント内のマシンでのみ設定でき、前の設定手順で使用したIPアドレスは、対応するインスタンス名に置き換える必要があります。同一ネットワークセグメントの構成とミラーリングの使用は、適時性と転送速度が高く、大量のデータの同期に適しています。セグメント間または公衆ネットワーク間のSQLサーバーミラーリングは、一般的に適時性の要件が低い少量のデータの同期に適しており、公衆ネットワーク上でデータベースを同期することは安全ではありません。