設定容錯移轉叢集執行個體 - NFS - Linux 上的 SQL Server
適用於:SQL Server - Linux
此文章說明如何針對 Linux 上的容錯移轉叢集執行個體 (FCI) 設定 NFS 儲存體。
NFS (或網路檔案系統) 是在 Linux (而非 Windows) 的領域中共用磁碟的常見方法。 NFS 和 iSCSI 類似,可以在伺服器或某種設備或儲存體單位上設定,前提是它必須符合 SQL Server 的儲存體需求。
重要的 NFS 伺服器資訊
裝載 NFS 的來源 (無論是 Linux 伺服器還是其他來源) 必須使用/符合 4.2 版或更新版本。 較舊的版本無法搭配 Linux 上的 SQL Server 運作。
設定要在 NFS 伺服器上共用的資料夾時,請確保它們會遵循這些指導方針一般選項:
rw
以確保該資料夾可以被讀取及寫入sync
以保證能寫入該資料夾- 請不要使用
no_root_squash
作為選項;它被視為安全性風險 - 確定已將完整權限 (
777
) 套用至該資料夾
確定您的安全性標準已針對存取強制執行。 設定資料夾時,請確定只有參與 FCI 的伺服器才能看見 NFS 資料夾。 在下列範例中,會顯示在以 Linux 為基礎的 NFS 解決方案上修改的 /etc/exports
,其中資料夾限制為 FCIN1
和 FCIN2
。
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See export(5).
#
/var/nfs/fci1 FCIN1(rw,sync) FCIN2(rw,sync)
Instructions
選擇將會參與 FCI 設定的其中一部伺服器。 任何一部伺服器都可以。
檢查該伺服器可以看見 NFS 伺服器上的裝載。
sudo showmount -e <IPAddressOfNFSServer>
<IPAddressOfNFSServer>
是您將會使用之 NFS 伺服器的 IP 位址。
針對系統資料庫或任何儲存在預設資料位置的內容,請遵循這些步驟。 否則,請跳到步驟 4。
確定您正在處理之伺服器上的 SQL Server 已經停止。
sudo systemctl stop mssql-server sudo systemctl status mssql-server
完全切換成超級使用者。
sudo -i
切換至
mssql
使用者。su mssql
建立暫存目錄來儲存 SQL Server 資料和記錄檔。
mkdir <TempDir>
<TempDir>
是資料夾的名稱。 下列範例會建立名為/var/opt/mssql/tmp
的資料夾。
mkdir /var/opt/mssql/tmp
將 SQL Server 資料和記錄檔複製到暫存目錄。
cp /var/opt/mssql/data/* <TempDir>
<TempDir>
是上一個步驟中的資料夾名稱。
確認檔案位於目錄中。
ls TempDir
<TempDir>
是上一個步驟中的資料夾名稱。
將檔案從現有的 SQL Server 資料目錄中刪除。
rm - f /var/opt/mssql/data/*
確認檔案已被刪除。
ls /var/opt/mssql/data
輸入 exit 以切換回根使用者。
將 NFS 共用裝載在 SQL Server 資料夾中。
mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
<IPAddressOfNFSServer>
是您將會使用之 NFS 伺服器的 IP 位址<FolderOnNFSServer>
是 NFS 共用的名稱。 下列範例語法會比對來自步驟 2 的 NFS 資訊。
mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
透過發出不含參數的 mount 來檢查掛接是否成功。
mount
以下是預期的輸出。
10.201.202.63:/var/nfs/fcil on /var/opt/mssql/data type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard, proto=tcp,port=0,timeo=14, retrans=2,sec=sys,clientaddr=10.201.202.128,local lock=none, addr=10.201.202.63)
切換至
mssql
使用者。su mssql
複製暫存目錄 /var/opt/mssql/data 中的檔案。
cp /var/opt/mssql/tmp/* /var/opt/mssqldata
驗證檔案存在。
ls /var/opt/mssql/data
輸入
exit
以退出mssql
。輸入
exit
以退出根使用者角色。啟動 SQL Server。 如果所有內容皆已正確複製,並正確地套用安全性,SQL Server 應該會顯示為已啟動。
sudo systemctl start mssql-server sudo systemctl status mssql-server
建立資料庫以測試已正確設定安全性。 下列範例顯示透過 Transact-SQL 來完成此作業;您也可以透過 SSMS 來完成它。
停止 SQL Server 並驗證它已關閉。
sudo systemctl stop mssql-server sudo systemctl status mssql-server
如果您不打算建立任何其他 NFS 裝載,請將共用卸載。 如果您打算那麼做,請不要卸載。
sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
<IPAddressOfNFSServer>
是您將會使用之 NFS 伺服器的 IP 位址<FolderOnNFSServer>
是 NFS 共用的名稱<FolderMountedIn>
是在上一個步驟中所建立的資料夾。
針對系統資料庫以外的其他內容 (例如,使用者資料庫或備份),請遵循這些步驟。 如果僅使用預設位置,請跳到步驟 5。
切換成超級使用者。
sudo -i
建立 SQL Server 將會使用的資料夾。
mkdir <FolderName>
<FolderName>
是資料夾的名稱。 如果資料夾不是位於正確的位置,則必須指定其完整路徑。
下列範例會建立名為
/var/opt/mssql/userdata
的資料夾。mkdir /var/opt/mssql/userdata
將 NFS 共用裝載在上一個步驟中所建立的資料夾中。
mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr
<IPAddressOfNFSServer>
是您將會使用之 NFS 伺服器的 IP 位址<FolderOnNFSServer>
是 NFS 共用的名稱<FolderToMountIn>
是在上一個步驟中所建立的資料夾。
下列範例會裝載 NFS 共用。
mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
透過發出不含參數的 mount 來檢查掛接是否成功。
輸入 exit 來退出超級使用者。
若要進行測試,請在該資料夾中建立資料庫。 下列範例使用 sqlcmd 來建立資料庫,將內容切換至它,驗證檔案存在於 OS 層級,然後刪除暫存位置。 您可以使用 SSMS。
將共用取消掛接
sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
<IPAddressOfNFSServer>
是您將會使用之 NFS 伺服器的 IP 位址<FolderOnNFSServer>
是 NFS 共用的名稱<FolderMountedIn>
是在上一個步驟中所建立的資料夾。
對其他節點重複這些步驟。