MS_SQLServerClustering - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

SQL Server のクラスタリング

概要

SQL Server のクラスタリング機構。

詳細

MSCS/WSFC

MSCS/WSFC

レプリケーション系

SQL Server のレプリケーション

データベース・ミラーリング

SQL Server のレプリケーションを参照。

AlwaysOn

SQL Server のレプリケーションを参照。

補足(3つの方式の整理): 「クラスタリング」と一括りにされるが、
何を冗長化するかが方式ごとに異なる。ここを取り違えると設計を誤る。

方式 冗長化するもの ストレージ データの複製
フェールオーバー クラスタ インスタンス(FCI) SQL Server インスタンス 共有(SAN / 記憶域スペース ダイレクト) しない(1 つのデータを付け替える)
可用性グループ(AlwaysOn AG) データベース(複数まとめて) 各ノードが個別に持つ ログ ブロックを転送して適用
データベース ミラーリング データベース(1 つずつ) 各ノードが個別に持つ ログ レコードを転送して適用

FCI は共有ストレージ自体が単一障害点になるため、
ストレージ側の冗長化が別途必要になる。
AG はストレージを共有しないため、
ストレージ障害・データ破損に対しても冗長性があるのが大きな違い。

なお、FCI と AG は組み合わせて使える
(FCI を AG のレプリカにする構成)。

補足(最新化):

  • データベース ミラーリングは非推奨(SQL Server 2012 で非推奨化)。
    新規構築では可用性グループを使用する。
  • Standard Edition でも「基本可用性グループ」が利用可能
    (SQL Server 2016 以降)。ただし、
    • 1 つの AG につきデータベースは 1 つのみ
    • レプリカは 2 つ(プライマリ + セカンダリ)のみ
    • 読み取り可能セカンダリは不可(参照系のオフロードはできない)
  • 読み取り可能セカンダリや複数セカンダリ、
    読み取り専用ルーティングは Enterprise Edition の機能。
  • SQL Server 2017 以降は Linux でも可用性グループが構成でき、
    Pacemaker と組み合わせる。
  • クラウドでは、Azure SQL Database のように
    プラットフォーム側が可用性を提供する PaaS を選ぶことで、
    これらの構築・運用自体を不要にできる
    プラットフォーム・アーキテクチャ参照)。

補足(可用性グループを組む前に決めること):

論点 内容
同期モード 同期コミット(データ損失なし、コミットが遅くなる)か非同期コミット(遅延なし、データ損失の可能性)か
フェールオーバー 自動(同期コミットのみ)か手動か
クォーラム WSFC の投票構成。偶数ノードならファイル共有監視やクラウド監視を追加
リスナー クライアントの接続先を仮想名に集約する(アプリ側は接続文字列に MultiSubnetFailover=True を指定)

同期コミットはセカンダリのログ書き込み完了を待つため、
レプリカ間のネットワーク遅延がそのまま更新性能に響く
SQL Server のファイルの配置WRITELOG の話と同根)。

参考

関連


Tags: 移行, データアクセス, SQL Server

⚠️ **GitHub.com Fallback** ⚠️