前回の投稿では、SQL Server on Linuxの基本的な可用性について紹介しました。
本記事ではそれ以外の可用性機能について紹介します。
◆SQL Server on Linuxのフェイルオーバクラスタリング
Windows版と同様に、SQL Server on Linuxのフェイルオーバクラスタは、共有ストレージに接続された複数のサーバで構成されています。サーバはクラスタノードと呼ばます。
Windows版のSQL Serverのフェイルオーバクラスタリングインスタンスと同様に、SQL Server on Linuxクラスタリングは、インスタンスレベルでの保護、自動および手動のフェイルオーバ、アプリケーションやクライアントの透過的なフェイルオーバ、数秒から数分のPTOをサポートします。
SQL Server on Linuxでフェイルオーバクラスタリングを行う場合は、Windows版とは違い、ネイティブのLinux Pacemaker high availabilityテクノロジを使用します。
すべてのクラスタノードは、ストレージリソースへのアクティブな接続を必要としており、Pacemakerが障害を検出すると、クラスタリングコンポーネントはSQL インスタンスを別のノードへ移動させます。
イメージとしては、下記のような図となります。
◆AlwaysOn可用性グループ
Windows版のSQL Serverと同様に、SQL Server on Linuxの可用性レベルはAlwaysOn可用性グループによって提供されます。
SQL Server on LinuxにてサポートされているAlwaysOn可用性グループは以下となります。
- 最大8つのセカンダリレプリカの保護
- 複数データベースの保護
- 最大3つの同期レプリカ
- 同期および非同期のセカンダリレプリカの混合
- 手動または自動でのフェイルオーバ
- 読み取り専用のセカンダリ提供
- 読み取り専用ルーティング
Linux上の可用性グループには、2つの構成タイプがあります。Pacemalerを使用してビジネス継続性を提供する高可用性構成を作成するか、クラスタマネージャーを使用せずに読み取りスケールアウト可用性グループを作成できます。読み取りスケールアウトは、パフォーマンスのスケールアウトのための読み取り専用レプリカのみを提供します。
高可用性とデータ保護を提供する可用性グループ構成には、3つの同期レプリカが必要です。Windows Serverフェールオーバークラスタが存在しない場合、可用性グループの構成は、参加するSQL Serverインスタンスのマスターデータベースに格納されます。高可用性とデータ保護を提供するには、少なくとも3つの同期レプリカが必要です。
2つの同期レプリカを持つ可用性グループはデータ保護を提供できますが、この構成では自動高可用性を提供できません。プライマリレプリカが停止している場合、可用性グループは自動的にフェイルオーバーします。
ただし、プライマリレプリカがリカバリされるまで、アプリケーションは自動的に可用性グループに接続できません。WindowsとLinuxの両方のレプリカを含む可用性グループを混在させることができますが、Microsoftはこれをデータ移行にのみ推奨します。
SQL Server on Linuxは、企業がリレーショナルデータベースアプリケーションに必要とするエンタープライズレベルのデータ保護および可用性機能を提供します。ただし、LinuxのSQL Serverはフェールオーバークラスタリング、可用性グループ、およびログ配布をサポートしていますが、データベースミラーリングはサポートしていません。データベースのミラーリングはWindows版のSQL Server 2017でもサポートされていますが、将来的に削除される予定の償却された機能です。
関連したトピックス
- SQL Server for Linuxがすぐそこに! – WindowsデータベースがHA機能を追加
- SQL Server on Linuxの可用性について ①
- DBMotoでのMicrosoft SQL Server 2017 on Linuxとの接続検証
- SQL ServerとMySQLリレーショナルデータベースの比較
- HiT ODBC/DB2 v6.2とHiT OLEDB/DB2 v4.2のリリース
- Azure Database for PostgreSQLを使い始めるにあたって
- HiT ODBCとOLE DB のIBM DB2 v.9サポートを発表
- CAP定理の壁 ~NewSQLへの道~
- Oracle RAC One Node環境を構成してみました ステップ1 Oracle Linux環境の導入
- Dockerfilesを使用してSQL Server Dockerコンテナを構成