溫馨提示×

CentOS SQL Server集群如何搭建

小樊
43
2025-09-26 18:38:29
欄目: 云計算

CentOS上搭建SQL Server集群指南(以Always On可用性組為例)

一、準備工作

1. 環境要求

  • 操作系統:所有節點安裝CentOS 7.9及以上版本(或RHEL兼容發行版),確保系統已更新至最新補丁。
  • 網絡配置:節點間網絡互通,關閉SELinux(setenforce 0)或配置為寬松模式,防火墻開放SQL Server默認端口(1433)、Always On端點端口(5022)。
  • 存儲要求:共享存儲(如NFS)用于存放數據庫文件,確保所有節點可掛載訪問;或使用本地存儲+數據同步工具(如rsync)。
  • 版本兼容:選擇SQL Server Linux版本(如2019、2022),確保與CentOS版本兼容。

2. 依賴安裝

在所有節點執行以下命令安裝必要工具:

sudo yum install -y wget curl yum-utils

3. 添加SQL Server YUM倉庫

下載并添加Microsoft官方SQL Server倉庫:

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2022.repo

4. 安裝SQL Server

使用YUM安裝SQL Server引擎:

sudo yum install -y mssql-server

5. 初始化SQL Server配置

運行配置腳本,設置SA密碼(需符合復雜度要求)和實例版本:

sudo /opt/mssql/bin/mssql-conf setup

選擇“Enterprise”或“Standard”版本(根據需求),完成安裝后啟動服務:

sudo systemctl start mssql-server
sudo systemctl enable mssql-server

二、配置Always On可用性組(AG)

1. 啟用Always On功能

在每個節點的SQL Server實例中啟用Always On:

USE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Always On Availability Groups', 1;
RECONFIGURE;
GO

重啟SQL Server服務使配置生效:

sudo systemctl restart mssql-server

2. 創建Windows故障轉移群集(WSFC,可選但推薦)

若需更高級的高可用性(如跨節點自動故障轉移),需創建WSFC:

  • 在Windows Server上安裝“故障轉移群集”功能(Install-WindowsFeature -Name Failover-Clustering)。
  • 使用“故障轉移群集管理器”創建集群,添加所有SQL Server節點。
  • 配置集群見證(如文件共享見證),確保集群仲裁。

3. 創建可用性組

在主節點(Primary Replica)上執行以下SQL命令,創建可用性組:

CREATE AVAILABILITY GROUP [YourAGName]
FOR DATABASE [YourDatabaseName]  -- 替換為目標數據庫
REPLICA ON
    'Node1' WITH (
        ENDPOINT_URL = 'TCP://Node1_IP:5022',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  -- 同步提交(強一致性)
        FAILOVER_MODE = AUTOMATIC,               -- 自動故障轉移
        PRIMARY_ROLE (ALLOW_CONNECTIONS = ALL),  -- 主節點允許所有連接
        SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)  -- 輔助節點只讀
    ),
    'Node2' WITH (
        ENDPOINT_URL = 'TCP://Node2_IP:5022',
        FAILOVER_MODE = AUTOMATIC
    );
GO

4. 加入輔助副本

在輔助節點(Secondary Replica)上執行以下命令,將節點加入可用性組:

ALTER AVAILABILITY GROUP [YourAGName]
ADD REPLICA ON
    'Node2' WITH (
        ENDPOINT_URL = 'TCP://Node2_IP:5022',
        FAILOVER_MODE = AUTOMATIC
    );
GO

5. 備份與還原數據庫

在主節點上備份數據庫,并還原到輔助節點(需使用WITH NORECOVERY選項):

-- 主節點備份
BACKUP DATABASE [YourDatabaseName] 
TO DISK = '/var/opt/mssql/backup/YourDatabaseName.bak'
WITH INIT, STATS = 10;
GO

-- 輔助節點還原(在輔助節點執行)
RESTORE DATABASE [YourDatabaseName] 
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName.bak'
WITH NORECOVERY, MOVE 'YourDatabaseName_Data' TO '/var/opt/mssql/data/YourDatabaseName.mdf',
MOVE 'YourDatabaseName_Log' TO '/var/opt/mssql/data/YourDatabaseName.ldf';
GO

6. 完成可用性組配置

在主節點上執行以下命令,授予連接權限并驗證狀態:

-- 授予連接權限
ALTER AVAILABILITY GROUP [YourAGName]
GRANT CONNECT TO [YourLoginName];  -- 替換為實際登錄名
GO

-- 驗證可用性組狀態
SELECT ag.name AS AGName, ar.replica_server_name AS ReplicaName, 
       ars.role_desc AS Role, ars.synchronization_health_desc AS SyncStatus
FROM sys.availability_groups ag
JOIN sys.availability_replicas ar ON ag.group_id = ar.group_id
JOIN sys.dm_hadr_availability_replica_states ars ON ar.replica_id = ars.replica_id;
GO

三、可選:使用Pacemaker實現跨節點高可用(無WSFC)

若未使用WSFC,可通過Pacemaker+Corosync實現集群編排:

1. 安裝Pacemaker和Corosync

在所有節點執行:

sudo yum install -y pacemaker corosync pcs

2. 配置Corosync

編輯/etc/corosync/corosync.conf,定義節點通信:

totem {
    version: 2
    cluster_name: sql_cluster
    transport: udpu
    interface {
        ringnumber: 0
        bindnetaddr: 192.168.1.0  # 替換為節點所在網段
        mcastport: 5405
    }
}
nodelist {
    node {
        ring0_addr: Node1_IP
        nodeid: 1
    }
    node {
        ring0_addr: Node2_IP
        nodeid: 2
    }
}
quorum {
    provider: corosync_votequorum
    two_node: 1  # 兩節點集群啟用
}

啟動Corosync和Pacemaker:

sudo systemctl start corosync
sudo systemctl start pacemaker
sudo systemctl enable corosync
sudo systemctl enable pacemaker

3. 創建SQL Server資源

創建SQL Server資源腳本(sql_resource.sh):

#!/bin/bash
sudo pcs resource create mssqlha ocf:mssql:fci \
    op monitor interval=30s \
    op start timeout=120s \
    op stop timeout=120s
sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 \
    ip=192.168.1.100  # 虛擬IP(客戶端連接地址)
sudo pcs constraint colocation add virtualip with mssqlha INFINITY
sudo pcs constraint order mssqlha then virtualip

執行腳本并驗證集群狀態:

chmod +x sql_resource.sh
./sql_resource.sh
sudo pcs status

四、驗證與測試

  1. 連接測試:使用SQL Server Management Studio(SSMS)或sqlcmd連接虛擬IP,驗證數據庫訪問。
  2. 故障轉移測試:停止主節點SQL Server服務,觀察輔助節點是否自動提升為主節點(通過pcs status查看狀態)。
  3. 性能測試:運行負載測試,驗證同步提交的性能影響(同步提交會降低寫入性能,但保證強一致性)。

注意事項

  • 權限管理:確保SQL Server登錄賬戶(如Pacemaker使用的賬戶)具有足夠權限(sysadmin角色)。
  • 數據同步:同步提交模式下,輔助節點需與主節點保持網絡穩定,避免延遲導致故障。
  • 監控維護:配置監控工具(如Prometheus+Granafa)監控集群狀態,定期備份數據庫。
  • 版本支持:SQL Server on Linux的高可用性功能仍在演進,建議使用最新穩定版本(如2022)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女