複数データベースを同時にフェールオーバーできる
SQL Serverで一般的にデータベースのデザインをする場合、ひとつのインスタンスにデータベースを1個だけ作成して、すべてのオブジェクトを格納するという手法は、とても稀な使用方法と言えます。多くのユーザは目的別に複数のデータベースを作成しています。また、アプリケーションが別々のデータベースのテーブルを、ひとつのトランザクションで操作することも一般的に行われています。そのため、データベースミラーリングでは実現することができなかった、関連する複数のデータベースを同時にフェールオーバーするというこの機能は、多くのユーザが長らく期待していたものではないでしょうか。
複数データベースのフェールオーバーを実現するために、新たに「Avalilability Group(可用性グループ)」というオブジェクトが用意されました。このAvailability Groupを単位としてフェールオーバーが行われます。ユーザは同時にフェールオーバーさせたいデータベースを、同じAvailability Groupに登録します(現時点での検証結果としては、ひとつのAvaiability Groupあたりに、最大10個までのデータベースの登録が許容範囲内とされています)。また、必要に応じて複数のAvailability Groupを作成することもできます。
データベースのレプリカを 5 個まで持つことができる
従来のデータベースミラーリングでは、オリジナルデータを保持しているプリンシパルデータベースとスタンバイデータを格納しているミラーデータベースという組み合わせで、合計すると2個のデータを確保することができていました。
さまざまな種類の障害が発生した時に、データベースが使用可能であり続けるために、Denaliでは合計で5個分のデータを確保します。それぞれのデータは「レプリカ」と呼ばれます。オリジナルデータを格納し、唯一更新処理を受け付けるデータベースは「プライマリレプリカ」、その他の読み取り専用のスタンバイデータベースは「セカンダリレプリカ」です。「セカンダリレプリカ」はさらに2種類に分かれます。ひとつは、常にプライマリと同じデータを持っている「同期セカンダリレプリカ」。もう一方は、若干の同期の遅延が発生する「非同期セカンダリレプリカ」です。「非同期セカンダリレプリカ」は遠隔地に配置することができるため、災害対策としてとても有効です。
同期セカンダリレプリカ」と「非同期セカンダリレプリカ」は、双方ともに最大で2 個まで持つことができます。このように1個のプライマリと4個のセカンダリで複合的な障害にも対応できるようになります。