Denali CTP3 では、AlwaysOn Availability Groups (HADR) で複数のセカンダリを指定した環境 (マルチセカンダリレプリカ) を作ることが可能です。
ただし、マルチセカンダリレプリカを設定する場合にはトレースフラグを事前に設定しておく必要があります。
今回はこの辺をまとめてみたいと思います。
■マルチセカンダリレプリカの設定
AlwaysOn Availability Groups の設定の流れについては別途まとめようと思いますので、今回はマルチセカンダリレプリカの箇所に関してのみまとめています。
まずはトレースフラグを設定していない状態で、マルチセカンダリレプリカの環境を作成してみます。
今回は、[高パフォーマンス] (非同期モード) で環境を構築しています。
トレースフラグを設定していない場合、可用性グループの作成時に以下のようなエラーとなります。
CTP3 からマルチセカンダリを設定できるようになっているのですが、これはトレースフラグ [9532] を設定している場合になります。
AlwaysOn Availability Groups に使用する全インスタンスで SQL Server 構成マネージャーを使用して、[起動時のパラメーター] に [-T9532] を設定します。
# 設定したら SQL Server のサービスを再起動します。
-T9532 を設定している状態であれば、以下の画像のように複数のセカンダリを設定した環境を作成することが可能となります。
この辺の情報に関しては以下に記載がされています。
Multiple secondary replicas are supported only if trace flag 9532 has been enabled on the server instance.
AlwaysOn Availability Groups
Functionality Supported Only When Trace Flag 9532 Is Enabled
今回使用したトレースフラグ 9532 ですが、設定をしないと使用できない機能 (可用性レプリカからインスタンスを削除等) があるので、検証時には設定しておいたほうが良さそうですね。
■自動フェールオーバー可能なインスタンス数
-T9532 を使用することで複数のセカンダリを設定することが可能ですが、自動フェールオーバーに設定ができるインスタンスは 2 に限定がされているようです。
以下のような設定であれば可能です。
ミラーリングの場合はレプリカモードは全体で一つの設定ですが、AlwaysOnの場合はインスタンス単位で設定することが可能となっています。
AlwaysOn Availability Groups (SQL Server) によると
Synchronous-commit mode. This availability mode emphasizes high availability and data protection over performance, at the cost of increased transaction latency. A given availability group can support up to three synchronous-commit availability replicas, including the current primary replica.
となっており、同期モードの場合は 3 レプリカまで設定ができるというように制限があったりするようです。
非同期モードの場合はレプリカ数の設定は書かれていないのですよね。
Asynchronous-commit mode. This availability mode is a disaster-recovery solution that works well when the availability replicas are distributed over considerable distances.
この辺は新しい概念になるのでいろいろと調べないといけないですね…。