HADR (Always On) を構築する際にはデータの初期同期を実行する必要があります。
構築時に初期同期を実行する場合には、[Start Data Synchronization] をクリックすると、共有フォルダにバックアップを取得して、Secondary のサーバーにリストアすることで初期同期をすることができます。
ただし、初期同期は必須ではないため、[Close] をクリックするとスキップして HADR の初期設定を完了することが可能です。
再度、共有フォルダを使用した初期同期の画面を開こうにもこの画面は構築時にしか開けないようで、スキップした場合は手動で同期を行う必要があります。
今回はこの手順についてまとめていきたいと思います。
■Primary のバックアップを取得
最初に Primary で HADR 対象のデータベースのバックアップを取得します。
バックアップは完全バックアップとログバックアップの二種類を取得します。
今回は、HADR1 というデータベースを使用していますので、以下のようなクエリとなります。
BACKUP DATABASE [HADR1] TO DISK=N’HADR1.bak’ WITH INIT, FORMAT, COMPRESSION BACKUP LOG [HADR1] TO DISK=N’HADR1.trn’ WITH INIT, FORMAT, COMPRESSION |
取得したバックアップを Secondary でリストアします。
この時、[NORECOVERY] を指定して復元をする必要があります。
RESTORE DATABASE [HADR1] FROM DISK = N’C:Program FilesMicrosoft SQL ServerMSSQL11.INST2MSSQLBackupHADR1.bak’ RESTORE LOG [HADR1] FROM DISK = N’C:Program FilesMicrosoft SQL ServerMSSQL11.INST2MSSQLBackupHADR1.trn’ |
これで Secondary 側ではリストア中のデータベースとして認識した状態となります。
■Availability Group にデータベースを追加
Secondary でデータベースをリストアしたら SSMS で Secondary に接続をし、[Management] → [Availability Groups] → [Availability Dataases] を展開します。
現在、Secondary は初期同期が行われていない状態なので、Availability Replicas としては無効な状態となっています。
また、[Availability Databases] も同期が行われていないため警告のアイコンが表示されています。
Availability Databases から対象のデータベースを右クリックすると、[Join to Availability Group] を選択することができます。
データベースとログのバックアップをリストアし、NORECOVERY 状態のデータベースであれば、Availability Group に追加することが可能です。
データベースのリストアを手順を踏んで実施していれば、Availability Group に追加が完了し、エラー / 警告アイコンも消えます。
また、追加したタイミングで Restoring の状態も解除され、HADR の設定時に読み取りとしての利用を可にしていればデータベースを使用することが可能です。
ミラーリングの場合はミラーのデータベースを使用する場合、スナップショットをとる必要があったと思うのですが、HADR では Always On と言われているようにスナップショットを使用しなくても読み取り専用としてデータベースを使用することが可能となっています。
読み取り側のデータベースでは行バージョンが使われ、読み取り中のブロックを軽減させる仕組みも取られているようです。
この辺はまた別の投稿でまとめていきたいと思います。