次の方法で共有


Linux デプロイでの SQL Server 可用性の基本

適用対象:SQL Server on Linux

SQL Server 2017 (14.x) 以降では、Linux と Windows の両方で SQL Server がサポートされています。 Windows ベースの SQL Server デプロイと同様に、SQL Server のデータベースとインスタンスは、Linux 下でも高可用性を備えている必要があります。

この記事では、高可用性 Linux ベースの SQL Server インスタンスとデータベースの計画とデプロイの技術的な側面について説明し、Windows ベースのインストールとの主な違いについて説明します。 SQL Server または Linux は初めて使用する場合があるため、この記事では、既によく知られている概念について説明します。

Linux デプロイでの SQL Server 可用性オプション

バックアップと復元に加えて、Linux では、Windows ベースのデプロイと同じ、3 つの可用性機能を使用できます。

Windows の場合、FCI には常に基になる Windows Server フェールオーバー クラスター (WSFC) が必要です。 デプロイ シナリオによっては、AG には通常、基になる WSFC が必要になります (ただし、SQL Server 2017 (14.x) の新しい None バリアントは例外です)。 WSFC は Linux には存在しません。 Linux でのクラスタリングの実装については、「Linux での可用性グループとフェールオーバー クラスター インスタンスのための Pacemaker」をご覧ください。

Linux についてのクイック ガイド

一部の Linux インストールにはインターフェイスが含まれていますが、ほとんどの場合は含まれません。 コマンド ラインは、オペレーティング システム レイヤーのほぼすべてのものに使用します。 Linux の世界でのこのコマンド ラインの一般的な用語は シェルであり、最も一般的なのは bashです。

Linux では、Windows Server で管理者特権が必要な場合と同様に、多くのコマンドを実行するには管理者特権が必要です。 管理者特権でコマンドを実行するには、次の 2 つの方法があります。

  1. 適切なユーザーとしてコマンドを実行します。 別のユーザーに変更するには、 su コマンドを使用します。 ユーザー名なしで su を実行する場合は、パスワードがわかっている場合は、 root としてシェルを入力します。

  2. コマンドの前に sudo を使用します。 この方法は、より一般的で安全です。 この記事の多くの例では、 sudoを使用します。

一般的なコマンドを次に示します。 各コマンドには、オンラインで調査できるさまざまなスイッチとオプションがあります。

  • cd - ディレクトリを変更します
  • chmod - ファイルまたはディレクトリのアクセス許可を変更します
  • chown - ファイルまたはディレクトリの所有者を変更します
  • ls - ディレクトリの内容を表示します
  • mkdir - ドライブにフォルダー (ディレクトリ) を作成します
  • mv - ある場所から別の場所にファイルを移動します
  • ps - 処理中のプロセスをすべて表示します
  • rm - ファイルをサーバー上でローカルに削除します
  • rmdir - フォルダー (ディレクトリ) を削除します
  • systemctl - サービスを開始、停止、または有効化します
  • テキスト エディター コマンド。 Linux には、vi や emacs など、さまざまなテキスト エディター オプションがあります。

Linux 上の SQL Server の可用性構成に関する一般的なタスク

このセクションでは、Linux ベースのすべての SQL Server デプロイに共通するタスクについて説明します。

ファイルをコピーできることを確認する

SQL Server on Linux を管理するすべてのユーザーは、あるサーバーから別のサーバーにファイルをコピーできる必要があります。 このタスクは、AG 構成に不可欠です。

アクセス許可の問題は、Linux と Windows ベースの両方のインストールに存在する可能性があります。 ただし、サーバーからサーバーにファイルをコピーする方法に慣れている Windows ユーザーは、Linux でのファイルの実行方法に慣れていない可能性があります。 一般的な方法は、scpを意味するコマンド ライン ユーティリティ を使用することです。 scp では、バックグラウンドで OpenSSH が使用されます。 SSH は セキュリティで保護されたシェルを意味します。 Linux ディストリビューションによっては、OpenSSH 自体はインストールされない場合もあります。 そうでない場合は、OpenSSH をインストールする必要があります。

Linux ディストリビューション用に OpenSSH を構成する方法の詳細については、以下を参照してください。

SQL Server 2025 (17.x) 以降、SUSE Linux Enterprise Server (SLES) はサポートされていません。

scpを使用する場合は、サーバーが移行元または転送先でない場合は、サーバーの資格情報を指定する必要があります。 たとえば、次のコマンドは、ファイル MyAGCert.cer を他のサーバーで指定されたフォルダーにコピーします。

scp MyAGCert.cer username@servername:/folder/subfolder

コピーするファイルのアクセス許可と、場合によっては所有権が必要であるため、コピーする前に chown を使用する必要がある場合があります。 同様に、受信側では、アクセス権を持った適切なユーザーがファイルを操作する必要があります。 たとえば、証明書ファイルを復元するには、mssql のユーザーがそのファイルにアクセスできる必要があります。

サーバー メッセージ ブロック (SMB) の Linux バリアントである Samba を使用して、UNC パス (\\SERVERNAME\SHARE など) によってアクセスされる共有を作成することもできます。 Samba の構成の詳細については、各ディストリビューションに関する次のリンクを参照してください。

SQL Server 2025 (17.x) 以降、SUSE Linux Enterprise Server (SLES) はサポートされていません。

Windows ベースの SMB 共有を使用することもできます。 Samba のクライアント部分が SQL Server をホストする Linux サーバーで適切に構成され、共有が適切なアクセス権を持っている限り、SMB 共有は Linux ベースである必要はありません。 混在環境のお客様の場合、このアプローチを使用すると、Linux ベースの SQL Server デプロイに既存のインフラストラクチャを使用できます。

デプロイする Samba のバージョンは、SMB 3.0 に準拠している必要があります。 SQL Server 2012 (11.x) で SMB サポートが追加されたときには、すべての共有で SMB 3.0 をサポートする必要がありました。 Windows Server ではなく共有に Samba を使用する場合、Samba ベースの共有では、Samba 4.0 以降と、SMB 3.1.1 をサポートする 4.3 以降を使用する必要があります。 「SMB3 in Samba」は、SMB と Linux に関する情報源として有用です。

最後に、ネットワーク ファイル システム (NFS) 共有を使用することもできます。 SQL Server の Windows ベースのデプロイでは NFS を使用できません。また、Linux ベースのデプロイでのみ使用できます。

ファイアウォールの構成

Windows と同様に、Linux ディストリビューションにはファイアウォールが組み込まれています。 組織でサーバーの外部ファイアウォールを使用している場合は、Linux でファイアウォールを無効にできる可能性があります。 ただし、ファイアウォールを有効にする場所に関係なく、ポートを開く必要があります。 次の表に、Linux での高可用性 SQL Server デプロイに必要な一般的なポートを示します。

ポート番号 タイプ 説明
111 TCP/UDP NFS- rpcbind/sunrpc
135 TCP Samba (使用されている場合) - End Point Mapper
137 UDP Samba (使用されている場合) - NetBIOS Name Service
138 UDP Samba (使用されている場合) - NetBIOS Datagram
139 TCP Samba (使用されている場合) - NetBIOS Session
445 TCP Samba (使用されている場合) - SMB over TCP
1433 TCP SQL Server - 既定のポート。必要に応じて、mssql-conf set network.tcpport <portnumber> を使用して変更できます
2049 TCP、UDP NFS (使用されている場合)
2224 TCP Pacemaker - pcsd によって使用されます
3121 TCP Pacemaker - Pacemaker Remote ノードがある場合に必要です
3260 TCP iSCSI Initiator (使用されている場合) - /etc/iscsi/iscsid.config (RHEL) で変更できますが、iSCSI Target のポートと一致している必要があります
5022 TCP SQL Server - AG エンドポイント用に使用される既定のポート。エンドポイントの作成時に変更できます
5403 TCP ペースメーカー
5404 UDP Pacemaker - マルチキャスト UDP を使用している場合は Corosync で必要になります
5405 UDP Pacemaker - Corosync で必要です
21064 TCP Pacemaker - DLM を使用しているリソースで必要になります
Variable TCP AG エンドポイント ポート。既定値は 5022 です
Variable TCP NFS - LOCKD_TCPPORT 用のポート (RHEL では /etc/sysconfig/nfs にあります)
Variable UDP NFS - LOCKD_UDPPORT 用のポート (RHEL では /etc/sysconfig/nfs にあります)
Variable TCP/UDP NFS - MOUNTD_PORT 用のポート (RHEL では /etc/sysconfig/nfs にあります)
Variable TCP/UDP NFS - STATD_PORT 用のポート (RHEL では /etc/sysconfig/nfs にあります)

Samba で使用されるその他のポートについては、「 Samba ポートの使用状況」を参照してください

逆に、Linux でサービスの名前をポートの代わりに例外として追加できます。 たとえば、Pacemaker の high-availability を使用します。 適切な名前については、ディストリビューションを参照してください。 たとえば、RHEL では、Pacemaker に追加するコマンドは次のとおりです。

sudo firewall-cmd --permanent --add-service=high-availability

ファイアウォールのドキュメント

SQL Server 2025 (17.x) 以降、SUSE Linux Enterprise Server (SLES) はサポートされていません。

可用性のための SQL Server パッケージをインストールする

Windows ベースの SQL Server インストールでは、一部のコンポーネントは基本的なエンジンのインストールでもインストールされますが、それ以外はインストールされません。 Linux では、SQL Server エンジンのみがインストール プロセスの一部としてインストールされます。 その他はすべてオプションです。 Linux での高可用性 SQL Server インスタンスの場合、SQL Server と共に 2 つのパッケージをインストールする必要があります。

  • SQL Server エージェント (mssql-server-agent)
  • 高可用性 (HA) パッケージ (mssql-server-ha)

SQL Server エージェントは技術的には省略可能ですが、SQL Server ジョブの既定のスケジューラであり、ログ配布で必要になるため、インストールをお勧めします。

SQL Server 2017 (14.x) と CU 4 以降のバージョンでは、SQL Server エージェントはデータベース エンジン パッケージに含まれていますが、引き続きそれを有効にする必要があります。 Windows ベースのインストールでは、SQL Server エージェントはオプションではありません。

SQL Server エージェントは、SQL Server の組み込みのジョブ スケジューラです。 バックアップや定期的なメンテナンスなどのタスクをスケジュールするために使用されます。 Windows では、SQL Server エージェントは別のサービスとして実行されます。 Linux では、SQL Server 自体のコンテキストで実行されます。

Windows ベースの構成で AG または FCI を構成する場合、それらはクラスター対応です。 クラスター対応とは、SQL Server で、WSFC によって認識される特定のリソース DLL (FCI の場合は sqagtres.dllsqsrvres.dll、AG の場合は hadrres.dll) があり、WSFC によってそれが使用されることで、SQL Server のクラスター化機能が稼働し、正常に機能していることが確認されることを意味します。

クラスタリングは SQL Server にとってだけでなく、Linux 自体にとっても外部的な機能であるため、Microsoft では、Linux ベースの AG デプロイや FCI デプロイのために、リソース DLL に相当するコードを記述する必要がありました。 このリソースは、Pacemaker 用の SQL Server リソース エージェントとも呼ばれる、 mssql-server-ha パッケージです。 mssql-server-ha パッケージをインストールするには、「SQL Server on Linux 用の Pacemaker クラスターをデプロイする」をご覧ください。

Linux では、Full-Text Search (mssql-server-fts) と Integration Services (mssql-server-is) は省略可能な SQL Server パッケージであり、FCI または AG には必要ありません。

SQL Server の高可用性とディザスター リカバリーのパートナー

SQL Server サービスの高可用性とディザスター リカバリーを提供するためのツールを、業界をリードする豊富な種類の中から選びます。 このセクションでは、SQL Server をサポートする高可用性とディザスター リカバリーのソリューションを提供する Microsoft パートナー会社を示します。

パートナー 説明
DH2i DxEnterprise は、Windows、Linux、およびコンテナー環境向けの可用性管理ソリューションです。 高可用性をサポートし、計画されたダウンタイムと計画外のダウンタイムを削減し、物理リソースと論理リソースの管理を簡素化します。

- Kubernetes で DH2i DxEnterprise を使用した可用性グループを配置する
- チュートリアル: DH2i DxEnterprise を使用して 3 ノード Always On 可用性グループを設定する
HPE Serviceguard HPE SGLX は、フェールオーバー クラスター インスタンスと Always On 可用性グループの状況依存型の監視と回復のオプションを提供しています。 HPE SGLX ではデータ整合性とパフォーマンスを損なわずに、アップタイムを最大化します。

- チュートリアル: HPE Serviceguard for Linux を使用して 3 ノード Always On 可用性グループをセットアップする.
ペースメーカー Pacemaker は、オープンソースの高可用性クラスター リソース マネージャーです。 オープンソースのグループ通信システムである Corosync と共に使うことで、Pacemaker は、コンポーネントの障害を検出し、必要なフェールオーバー手順を調整して、アプリケーションの中断を最小限に抑えることができます。

- Linux 上の可用性グループとフェールオーバー クラスター インスタンスのための Pacemaker
- SQL Server on Linux 用の Pacemaker クラスターをデプロイする