SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Denali の HADR の初期同期を手動で実行

leave a comment

HADR (Always On) を構築する際にはデータの初期同期を実行する必要があります。
image

構築時に初期同期を実行する場合には、[Start Data Synchronization] をクリックすると、共有フォルダにバックアップを取得して、Secondary のサーバーにリストアすることで初期同期をすることができます。
image

ただし、初期同期は必須ではないため、[Close] をクリックするとスキップして HADR の初期設定を完了することが可能です。

再度、共有フォルダを使用した初期同期の画面を開こうにもこの画面は構築時にしか開けないようで、スキップした場合は手動で同期を行う必要があります。

今回はこの手順についてまとめていきたいと思います。

■Primary のバックアップを取得


最初に Primary で HADR 対象のデータベースのバックアップを取得します。
バックアップは完全バックアップとログバックアップの二種類を取得します。

今回は、HADR1 というデータベースを使用していますので、以下のようなクエリとなります。

BACKUP DATABASE [HADR1] TO DISK=N’HADR1.bak’ WITH INIT, FORMAT, COMPRESSION
GO

BACKUP LOG [HADR1] TO DISK=N’HADR1.trn’ WITH INIT, FORMAT, COMPRESSION
GO

取得したバックアップを Secondary でリストアします。
この時、[NORECOVERY] を指定して復元をする必要があります。

RESTORE DATABASE [HADR1] FROM DISK = N’C:Program FilesMicrosoft SQL ServerMSSQL11.INST2MSSQLBackupHADR1.bak’
WITH  FILE = 1,  MOVE N’HADR1′ TO N’C:Program FilesMicrosoft SQL ServerMSSQL11.INST2MSSQLDATAHADR1.mdf’, 
MOVE N’HADR1_log’ TO N’C:Program FilesMicrosoft SQL ServerMSSQL11.INST2MSSQLDATAHADR1_1.ldf’, 
NORECOVERY, REPLACE
GO

RESTORE LOG [HADR1] FROM DISK = N’C:Program FilesMicrosoft SQL ServerMSSQL11.INST2MSSQLBackupHADR1.trn’
WITH  FILE = 1,
NORECOVERY, REPLACE
GO

これで Secondary 側ではリストア中のデータベースとして認識した状態となります。
image

 

■Availability Group にデータベースを追加


Secondary でデータベースをリストアしたら SSMS で Secondary に接続をし、[Management] → [Availability Groups] → [Availability Dataases] を展開します。
image

現在、Secondary は初期同期が行われていない状態なので、Availability Replicas としては無効な状態となっています。
また、[Availability Databases] も同期が行われていないため警告のアイコンが表示されています。

Availability Databases から対象のデータベースを右クリックすると、[Join to Availability Group] を選択することができます。
image

データベースとログのバックアップをリストアし、NORECOVERY 状態のデータベースであれば、Availability Group に追加することが可能です。

[OK] をクリックして、グループに追加してみます。
image

データベースのリストアを手順を踏んで実施していれば、Availability Group に追加が完了し、エラー / 警告アイコンも消えます。
image

 

また、追加したタイミングで Restoring の状態も解除され、HADR の設定時に読み取りとしての利用を可にしていればデータベースを使用することが可能です。
image

ミラーリングの場合はミラーのデータベースを使用する場合、スナップショットをとる必要があったと思うのですが、HADR では Always On と言われているようにスナップショットを使用しなくても読み取り専用としてデータベースを使用することが可能となっています。

読み取り側のデータベースでは行バージョンが使われ、読み取り中のブロックを軽減させる仕組みも取られているようです。
この辺はまた別の投稿でまとめていきたいと思います。

Share

Written by Masayuki.Ozawa

7月 8th, 2011 at 2:18 pm

Posted in SQL Server

Tagged with , ,

Leave a Reply