適用於:Linux 上的 SQL Server
此文章說明與 Linux 上的 SQL Server 容錯移轉叢集執行個體 (FCI) 相關的概念。
要在 Linux 上建立 SQL Server FCI,請參見「在 Linux 上配置故障轉移叢集實例(RHEL)」。
群集層
在 Red Hat Enterprise Linux(RHEL)中,叢集層基於 RHEL HA 外掛。
Note
存取 Red Hat HA 附加元件與文件皆需要訂用帳戶。
在 SUSE Linux Enterprise Server (SLES) 中,群集層是以 SUSE Linux Enterprise 高可用性擴充功能 (HAE) 為基礎。
如需叢集設定、資源代理程式選項、管理、最佳做法和建議的詳細資訊,請參閱 SUSE Linux Enterprise 高可用性擴充功能 15。
RHEL HA 附加元件和 SUSE HAE 都是以 Pacemaker \(英文\) 為基礎。
如下圖所示,會向兩部伺服器提供儲存體。 群集元件 (Corosync 和 Pacemaker) 會協調通訊和資源管理。 其中一部伺服器與儲存體資源和 SQL Server 有活躍連線。 當 Pacemaker 偵測到失敗時,群集元件會負責將資源移至另一個節點。
SQL Server 在 Linux 上與 Pacemaker 的整合程度,不如在 Windows 上與 Windows Server 容錯移轉叢集 (WSFC) 的整合那麼緊密。 SQL Server 不知道叢集存在。 所有協調流程都是從外而入,且服務由 Pacemaker 控制為獨立執行個體。 此外,虛擬網路名稱為 WSFC 特定,Pacemaker 中沒有對應項。 預期 @@SERVERNAME 和 sys.servers 會傳回節點名稱,而叢集 DMV sys.dm_os_cluster_nodes 和 sys.dm_os_cluster_properties 則不會傳回任何記錄。 若要使用指向伺服器名稱而非 IP 位址的連線字串,他們必須在其 DNS 伺服器上,將用來建立虛擬 IP 資源的 IP 位址(如以下章節所述)以所選的伺服器名稱進行註冊。
在 SQL Server 2025 (17.x) 的累積更新 (CU) 3 和後續版本中,mssql-server-ha 套件提供了適用於 Red Hat Enterprise Linux (RHEL) 和 Ubuntu 的新版 Pacemaker HA 代理程式 v2。
Pacemaker HA 代理 v2 相較於前一代代理,帶來了可靠性與效能的提升,包括:
提升故障切換效能,以縮短計畫內外的故障切換時間。
支援 TLS 1.3,用於 Pacemaker 叢集與 SQL Server 之間的通訊。
Pacemaker HA agent v2 目前還在預覽階段。 現有的 Pacemaker HA 代理程式(v1)仍完整支援生產部署。
執行個體和節點的數目
Linux 上的 SQL Server 的其中一個主要差異,在於每部 Linux 伺服器只能具有單一 SQL Server 安裝。 該安裝項目被稱為執行個體。 與支援每個 WSFC 最多 25 個 FCI 的 Windows Server 不同,基於 Linux 的 FCI 只會有一個實例。 這個單一執行個體也會是預設執行個體;Linux 上並沒有具名執行個體的概念。
在涉及 Corosync 時,Pacemaker 叢集只能有最多 16 個節點,因此單一 FCI 可以跨越最多 16 部伺服器。 實作 SQL Server Standard Edition 的 FCI 針對每個叢集僅支援最多兩個節點,即使 Pacemaker 叢集具有最多 16 個節點。
在 SQL Server FCI 中,SQL Server 實例一次只在一個節點上啟用。
IP 位址和名稱
在 Linux Pacemaker 叢集上,每個 SQL Server FCI 都需要屬於它的唯一 IP 位址和名稱。 如果 FCI 設定跨越多個子網路,每個子網路都需要單一 IP 位址。 唯一名稱和 IP 位址是用來存取 FCI,使應用程式和使用者不需要知道 Pacemaker 叢集的基礎伺服器是哪個。
FCI 在 DNS 中的名稱應該要和在 Pacemaker 叢集中所建立之 FCI 資源的名稱相同。 名稱和 IP 位址都必須在 DNS 中註冊。
共用儲存體
所有的 FCI (無論其是位於 Linux 或 Windows Server) 都需要某種形式的共用儲存體。 此儲存體會向可以裝載 FCI 的所有伺服器呈現,但任何時候都只有單一伺服器可以針對 FCI 使用該儲存體。 Linux 底下的可用共用儲存體選項為:
- iSCSI
- 網路檔案系統 (NFS)
- 伺服器訊息區 (SMB)
在 Windows Server 下,有稍微不同的選項。 一個目前不支援 Linux 型 FCI 的選項,是使用 tempdb (其為 SQL Server 的暫存工作區) 節點的本機磁碟。
在橫跨多個位置的設定中,儲存在單一資料中心的內容必須與另一個資料中心同步。 在發生容錯移轉的情況下,FCI 將能上線,且儲存體將會保持一致。 若要達成此目的,需要針對儲存體複寫使用某種外部方法;無論是透過基礎儲存體硬體,或是某種以軟體為基礎的公用程式來達成。
Note
對於 SQL Server,使用直接呈現給伺服器的磁碟的 Linux 部署必須以 XFS 或 ext4 格式化。 目前不支援其他檔案系統。
呈現共用儲存體的程序,對於上述不同的支援方法皆相同:
- 設定共用儲存體
- 針對將作為 FCI 之 Pacemaker 叢集節點的伺服器將儲存體裝載為資料夾
- 若有需要,請將 SQL Server 系統資料庫移至共用儲存體
- 從每個連線至共用儲存體的伺服器上測試 SQL Server 是否能順利運作
Linux 上的 SQL Server 的其中一個主要差異,在於雖然您可以設定預設使用者資料和記錄檔的位置,系統資料庫一律必須存在於 /var/opt/mssql/data。 在 Windows Server 上,您可以選擇移動系統資料庫 (包括 tempdb)。 此事實將會影響針對 FCI 設定共用儲存體的方式。
非系統資料庫的預設路徑可以使用 mssql-conf 公用程式來變更。 關於如何更改預設值的資訊,請參見 「變更預設資料或日誌目錄位置」。 你也可以將 SQL Server 的資料和交易日誌存放在其他位置,只要它們有適當的安全性,即使該位置不是預設位置;地點必須被說明。