設定 SMB 儲存體容錯移轉叢集執行個體 - Linux 上的 SQL Server
適用於:SQL Server - Linux
此文章說明如何針對 Linux 上的容錯移轉叢集執行個體 (FCI) 設定 SMB 儲存體。
在非 Windows 的世界中,SMB 還稱為通用網際網路檔案系統 (CIFS) 共用,並透過 Samba 執行。 在 Windows 領域中,存取 SMB 共用的方式如下:\\SERVERNAME\SHARENAME
。 針對 Linux 型 SQL Server 安裝,SMB 共用必須以資料夾的形式掛接。
重要的來源和伺服器資訊
以下是成功使用 SMB 的一些提示和注意事項:
- SMB 共用可以在 Windows、Linux 或甚至是設備上,只要它使用 SMB 3.0 或更新版本即可。 如需 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/data
輸入 exit 以切換回根使用者。
將 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,您可以使用 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 來建立資料庫,將內容切換至它,驗證檔案存在於 OS 層級,然後刪除暫存位置。 您可以使用 SSMS。
將共用取消掛接
sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
<IPAddressOrServerName>
是 SMB 主機的 IP 位址或名稱<ShareName>
是共用的名稱<FolderMountedIn>
是裝載 SMB 的資料夾名稱。
對其他節點重複這些步驟。
您現在已準備好設定 FCI。