適用於:Linux 上的 SQL Server
此文章說明如何針對 Linux 上的容錯移轉叢集執行個體 (FCI) 設定 SMB 儲存體。
在 Windows 之外,SMB 也被稱為共用網際網路檔案系統(CIFS)共享,Samba 實作了此系統。 在 Windows 上,你可以存取格式為 \\SERVERNAME\SHARENAME的 SMB 共享。 對於基於 Linux 的 SQL Server 安裝,你必須將 SMB 共享掛載為資料夾。
重要的來源和伺服器資訊
遵循以下建議,成功使用 SMB:
- SMB 共享可以在 Windows、Linux 或使用更新版本的設備上使用。 欲了解更多關於 Samba 與 SMB 3.0 的資訊,請參閱 SMB 3.0 以確認您的 Samba 實作是否符合 SMB 3.0。
- SMB 共用應該具有高可用性。
- 在 SMB 共享資料夾上正確設定安全性。 以下範例來自
/etc/samba/smb.conf,其中SQLData是該份額的名稱。
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser
Instructions
選擇其中一台伺服器參與 FCI 設定。 哪一個都無所謂。
取得
mssql使用者的資訊。sudo id mssql請注意
uid、gid和群組。執行
sudo smbclient -L //NameOrIP/ShareName -U User。-
<NameOrIP>是裝載 SMB 共用的伺服器 DNS 名稱或 IP 位址。 -
<ShareName>是 SMB 分享的名稱。
-
針對系統資料庫或任何儲存在預設資料位置的內容,請遵循這些步驟。 否則,請跳到步驟 5。
確保你正在使用的伺服器上已停止 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> 是步驟 d 中資料夾的名稱。
將檔案從現有的 SQL Server 資料目錄中刪除。
rm -f /var/opt/mssql/data/*確認這些檔案是否已經不存在。
ls /var/opt/mssql/dataEnter
exit鍵即可切換回使用者。root將 SMB 共用掛接在 SQL Server 的 data 資料夾中。 此範例顯示連線到 Windows Server 上的 SMB 3.0 共用的語法。
mount -t cifs //<ServerName>/<ShareName> /var/opt/mssql/data -o vers=3.0,username=<UserName>,password=<Password>,domain=<domain>,uid=<mssqlUID>,gid=<mssqlGID>,file_mode=0777,dir_mode=0777-
<ServerName>是具有 SMB 共用之伺服器的名稱 -
<ShareName>是共享資源的名稱 -
<UserName>是用來訪問共享資源的使用者名稱 -
<Password>是使用者的密碼 -
<domain>是 Active Directory 的名稱 -
<mssqlUID>是mssql使用者的 UID -
<mssqlGID>是mssql使用者的 GID
-
不裝開關時可以確認安裝
mount。mount切換至
mssql使用者。su mssql複製暫存目錄
/var/opt/mssql/data中的檔案。cp /var/opt/mssql/tmp/* /var/opt/mssql/data驗證檔案存在。
ls /var/opt/mssql/data輸入
exit以離開使用者。mssql輸入
exit以離開使用者。root啟動 SQL Server。 如果你把所有東西都複製並正確套用安全措施,SQL Server 就會啟動。
sudo systemctl start mssql-server sudo systemctl status mssql-server若要進一步測試,請建立資料庫以確保權限正常。 以下範例使用 Transact-SQL;您也可以使用 SQL Server Management Studio(SSMS)。
停止 SQL Server 並驗證它已關閉。 如果你打算新增或測試其他磁碟,請不要在新增和測試前關閉 SQL Server。
sudo systemctl stop mssql-server sudo systemctl status mssql-server如果完成了,請卸載該份額。 否則,測試完或新增硬碟後再卸載。
sudo umount //<IPAddressorServerName>/<ShareName>/<FolderMountedIn>-
<IPAddressOrServerName>是 SMB 主機的 IP 位址或名稱 -
<ShareName>是共享資源的名稱 -
<FolderMountedIn>是裝載 SMB 的資料夾名稱
-
針對系統資料庫以外的其他內容 (例如,使用者資料庫或備份),請遵循這些步驟。 如果你只使用預設位置,請跳到第 14 步。
切換到超級使用者。
sudo -i建立一個資料夾讓 SQL Server 使用。
mkdir <FolderName><FolderName> 是資料夾的名稱。 如果資料夾位置不對,請指定該資料夾的完整路徑。 下列範例會建立名為
/var/opt/mssql/userdata的資料夾。mkdir /var/opt/mssql/userdata將 SMB 共用掛接在 SQL Server 的 data 資料夾中。 此示範顯示連接到基於 Samba 的 SMB 3.0 共用的語法。
mount -t cifs //<ServerName>/<ShareName> <FolderName> -o vers=3.0,username=<UserName>,password=<Password>,uid=<mssqlUID>,gid=<mssqlGID>,file_mode=0777,dir_mode=0777-
<ServerName>是具有 SMB 共用之伺服器的名稱 -
<ShareName>是共享資源的名稱 -
<FolderName>是在最後步驟中所建立之資料夾的名稱 -
<UserName>是用來訪問共享資源的使用者名稱 -
<Password>是使用者的密碼 -
<mssqlUID>是mssql使用者的 UID -
<mssqlGID>是mssql使用者的 GID。
-
不裝開關時可以確認安裝
mount。進入
exit以離開超級使用者。若要進行測試,請在該資料夾中建立資料庫。 以下範例是建立
sqlcmd資料庫,切換上下文到資料庫,驗證檔案是否存在於作業系統層級,然後刪除暫存位置。 您可以使用 SSMS。將共用資源取消掛接。
sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>-
<IPAddressOrServerName>是 SMB 主機的 IP 位址或名稱 -
<ShareName>是共享資源的名稱 -
<FolderMountedIn>是裝載 SMB 的資料夾名稱。
-
在其他節點上重複這些步驟。
您現在已準備好設定 FCI。