SQL Server 2017 基本的な可用性グループ(AlwaysOn 可用性グループ)概要

2019/01/09/

SQL Server 2017 Standard Editionにおいて、基本的な可用性グループ(AlwaysOn 可用性グループ)を構築することとなりました。構築にあたって必要な情報を以下にまとめます。

概要

  • SQL Server 2016より、Standard EditionにおいてもAlwaysOn 可用性グループが利用できるようになりました。(ミラーリング機能の後継)
  • Standard EditionにおけるAlwaysON 可用性グループのことを”基本的な可用性グループ”と呼びます。
  • SQL Server 2016/2017でもミラーリング機能は利用できるが、非推奨です。(今後のバージョンアップで削除される可能性があります。)
  • そのため、SQL Server 2016以降においては、基本的な可用性グループを利用することが一般的です。

AlwaysOn 可用性グループについて

  • データベースミラーリングに代わる、高可用性と災害復旧のための機能です。
  • 1つの書き込み/読み取り可能なプライマリデータベースと、1~8つの読み取り専用のセカンダリデータベースを構成します。これを可用性データベースと呼びます。
  • 可用性グループ(可用性データベース)をインスタンス化したものを可用性レプリカと呼びます。
  • 可用性レプリカは、2種類あります。
    • プライマリ レプリカ
      クライアントからプライマリデータベースの読み取り/書き込みを可能にし、各プライマリデータベースのトランザクションログレコードをすべてのセカンダリレプリカに送信します。
    • セカンダリ レプリカ
      各可用性グループのセカンダリコピーを保持し、可用性グループの潜在的なフェールオーバターゲットとして機能します。必要に応じて、セカンダリデータベースへの読み取り専用アクセスと、セカンダリデータベース上でのバックアップ作成をサポートします。
  • セカンダリレプリカがディスクにトランザクションログレコードを書き込むまで、プライマリレプリカによるデータベースへのトランザクションのコミットを待機するかどうか決定する”可用性モード”があります。
  • 可用性モードは以下の2種類あります。
    • 非同期コミットモード(Asynchronous-commit mode)
      • この可用性モードを利用する可用性レプリカを非同期コミットレプリカと呼びます。
      • セカンダリレプリカのログ書き込みを待機せずに、プライマリレプリカがトランザクションをコミットします。
      • トランザクション遅延が最小となるメリットがあります。
    • 同期コミットモード(Synchronous-commit mode)
      • この可用性モードを利用する可用性レプリカを同期コミットレプリカと呼びます。
      • セカンダリレプリカのログ書き込みを待機してから、プライマリレプリカがトランザクションをコミットします。
      • セカンダリデータベースへの書き込みを待機するため、トランザクションが完全に保護されることがメリットです。
      • ただし、トランザクションの遅延が増加するデメリットがあります。
  • フェールオーバーと呼ばれるプロセスで、可用性レプリカのプライマリロールとセカンダリロールが交換されます。
  • フェールオーバー動作実行時、セカンダリ レプリカがプライマリ ロールに移行し、新しいプライマリ レプリカとなります。
  • 元のプライマリレプリカが利用可能となると、セカンダリ ロールに移行し、セカンダリ レプリカになります。
  • フェールオーバーには以下の3種類の方式があります。
    • 計画的な手動フェールオーバー
      • データベース管理者が手動でフェールオーバーする方式です。
      • データ保護が保証されます。
      • プライマリレプリカとフェールオーバー対象のセカンダリレプリカにおいて同期コミットモードが設定されている必要があります。
      • また、セカンダリ レプリカが既に同期されている必要があります。
    • 自動フェールオーバー
      • エラーが発生すると自動的にフェールオーバーする方式です。
      • データ保護が保証されます。
      • プライマリレプリカとフェールオーバー対象のセカンダリレプリカにおいて同期コミットモードが設定されている必要があります。
      • さらに、セカンダリ レプリカが既に同期され、WSFCクォーラムを持ち、可用性グループの柔軟なフェールオーバーポリシーで指定された条件を満たしている必要があります。
    • 強制フェールオーバー
      • 非同期コミットモードで使用されます。
      • データ損失の可能性がある手動フェールオーバーです。
      • セカンダリ レプリカがプライマリ レプリカと動機されない場合に使用できる唯一のフェールオーバー形式です。
  • 可用性グループリスナーを作成することによって、特定の可用性グループのプリマリ レプリカへのクライアント接続を提供します。
  • アクティブなセカンダリ レプリカをサポートします。アクティブなセカンダリ機能は以下の2種類です。 (基本的な可用性グループでは未サポート)
    • セカンダリ レプリカでのバックアップ操作の実行します。
    • 1つ以上のセカンダリ レプリカへの読み取り専用アクセスします。

参考

AlwaysOn 可用性グループ (SQL Server) – SQL Server Always On | Microsoft Docs

AlwaysOn 可用性グループの概要 (SQL Server) – SQL Server Always On | Microsoft Docs

SQL ServerのAlwaysOn可用性グループを利用した、クラスター構成の検証 – ニフクラ ブログ