SQL Serverはミッションクリティカルな用途に充分耐えることができるように、可用性を高めるためのさまざまな機能が実装されてきました。最も初期段階から提供されているレプリケーションは、データを複製することによって災害対策用サイトの構築を実現できます。同様に長い実績をもつログ配布では、トランザクションログをリモートサイトへ復元することによって、災害対策サイトを用意することができます。
これらの二つの手段は、SQL Server インスタンスのフェールオーバーやクライアントからの透過的な接続をサポートしていません。その結果として災害発生時に、災害対策用に構築したサイトをプライマリデータとして運用を開始する際には、SQL Server の設定変更(プライマリ、セカンダリの切り替えなど)や、アプリケーションの接続先変更(災対サイト側へ接続)といった作業が必要となり、必然的に RTO (Recovery Time Objective: システムの復旧に必要な時間)が長くなる傾向があります。
そのため、より迅速なRTO 実現のためにAlwaysOn Failover Cluster Instance および AlwaysOn 可用性グループがサポートされていて、重要かつ緊急性が求められるシステムでは、積極的に利用されています。
これらの機能についてWindows 版 SQL Server については、既にご存知のユーザが多く、とても豊富な実績があります。それではLinux 版 SQL Server についてはいかがでしょうか? おそらく各機能の最新のサポート状況まで情報取集が完了している方は少ないのではないでしょうか。
レプリケーション
SQL Server 2019 から Linux 版 SQL Server もレプリケーションを使用することができます。機能の制限は非常に少なく(注1)、全てのレプリケーションのロール (パブリッシャ、ディストリビュータ、サブスクライバ)、ほぼすべてのレプリケーションの種類がサポートされています。
さらに、Windows 版 SQL Server と Linux 版 SQL Server との間のレプリケーションも構築することができます。
ログ配布
SQL Server 2017 からWindows 版と同等の機能がサポートされています。
AlwaysOn Failover Cluster Instance
SQL Server 2017 から使用可能です。クラスタソフトウェアとして WSFCではなく、Pacemakerが使用されていることによる構成方法や動作の違いはありますが、基本的に同等の機能がサポートされています。
AlwaysOn 可用性グループ
SQL Server 2017 から使用可能であり、可用性を実現するための基本的な機能はサポートされます。ただし、Windows 版では使用可能な一部機能が Linux 版ではサポートされていません(注2)。
注1:2 フェーズコミットを使用してサブスクライバのデータを更新する即時更新サブスクライバと、オラクルからのデータをSQL Serverに複製する Oracle パブリッシングがサポートされていません。
注2:分散トランザクションがサポートされていない点や、2ノード構成の自動フェールオーバーのための設定が異なります。最新情報及び詳細はこちらをご覧ください。
Kubernetes クラスタへのデプロイ
Linux 版 SQL Server を使用することで得られる魅力的な利点の中で最も重要なもののひとつは、 Docker コンテナとしてのデプロイがサポートされていることではないでしょうか。(ここで改めて言及する必要もないかもしれませんが) Docker コンテナを利用することによって、そのポータビリティを活かした環境構築が可能になり、開発環境や本番環境をデプロイする際の作業負荷を抑えることができる、といったメリットを得ることができます。
さらにLinux版独自の利点に着目すると、Docker コンテナの展開、スケーリング、および管理の自動化を実現することができるKubernetes へのデプロイも可能となる点です。Kubernetes クラスタ配下で動作することによって、Windows 版 SQL Server とは異なる可用性実現の選択肢を得ることになります。