Denali の HADR の構築はできましたので、今回はフェールオーバーについてまとめてみたいと思います。
■HADR 用のクラスターグループについて
HADR は WSFC が必須の構成となります。
HADR を構築するとクラスターグループとして Availability Group として設定したグループ名が作成されます。
このクラスターグループにはリソースが一つ含まれています。
このリソースですが、[SQL Server Availability Group] というリソースで作成されています。
リソースの所有者が [Primary] として設定されているサーバーになるようですね。
このグループですが、WSFC の管理コンソールからはグループを移動させることはできないようになっているようです。
■SSMS で Primary サーバーを切り替え
WSFC のグループは WSFC の管理コンソールからは切り替えることができません。
Primary サーバーを切り替える (フェールオーバーさせる) 場合は、SSMS から操作をする必要があります。
Primary サーバーの切り替えですが、現在 [Primary] サーバーとなっているサーバーの接続からは変更することができません。
- DENALI-01 : Primary
- DENALI-02 : Secondary
となっている場合、DELALI-01 の接続では、サーバーの切り替えをするためのメニューは表示されません。
DENALI-02 に接続し、Secondary で右クリックをするとメニューが少し変わります。
SSMS で Secondary のサーバーに接続をして、Secondary のサーバーを右クリックすると [Force Failover] が表示されます。
[Force Failover] を使用することで Primary と Secondary を切り替えることができます。
CTP1 の Release Notes には以下の記載があります。
The SQL Server Code-Named “Denali” CTP1 release of "HADR" is a preview and does not support the following features:
Synchronous data movement (synchronous-commit availability mode).
Manual failover and automatic failover.
The only supported form is forced failover, which allows data loss and suspends the secondary databases.
Log compression.
Automatic page repair.
The ALTER AVAILABILITY GROUP Transact-SQL statement does not support changing the configuration of the availability group such as changing read-only access to an availability replica, adding or removing an availability database, and adding or removing a secondary availability replica. For information about what this Transact-SQL statement supports, see ALTER AVAILABILITY GROUP (Transact-SQL) in Books Online.
現状は マニュアル / 自動フェールオーバーは実装されていないようです。
そのため、Primary / Secondary を切り替えるためには強制フェールオーバーをする必要があります。
# Primary のサービスを停止しても Secondary には切り替わりません。
それでは、[Force Failover] を実行して Primary と Secondary を切り替えてみたいと思います。
DEHALI-02 に接続し、[HADR Group] → [Availability Replicas] を展開して、[DENALI-02] を右クリックし、[Force Failover] をクリックします。
# Secondary の接続でないと [Force Failover] が表示されません。
H
ADR の強制フェールオーバーは以上で完了です。
強制フェールオーバーを実施すると以下の状態となります。
強制フェールオーバー前は [Primary] であった、[DENALI-01] が [Secondary] になっているのが確認できます。
強制フェールオーバーを実施した影響だと思うのですが、[Synchronization State] が [Synchronized] から [Not Synchronizing] に変わっています。
データベースの状態も [Online] から [Suspended] に変わっています。
強制フェールオーバーを実施した場合は、自動で [Online] にはならないため手動で HADR による同期を再開する必要があります。
同期を再開するためには、[Secondary] に接続をして [Resume Data Movement] を実行する必要があります。
[OK] をクリックして、HADR によるデータ同期を再開します。
自動フェールオーバーや自動ページ修復が実装されるとミラーリングと変わらない利用が出来そうなので期待大ですね。
次の CTP で検証できるようになっているとうれしいですね~。