Настройка экземпляра отказоустойчивого кластера хранилища SMB — SQL Server на Linux
Область применения: SQL Server — Linux
В этой статье описывается, как настроить хранилище SMB для экземпляра отказоустойчивого кластера в Linux.
В мире, отличном от Windows, SMB также называется общей файловой системой Интернета (CIFS) и реализуется через Samba. В мире Windows доступ к общей папке SMB выполняется следующим образом: \\SERVERNAME\SHARENAME
При установке SQL Server в Linux общий ресурс 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
Инструкции
Выберите один из серверов, который будет участвовать в настройке FCI. Это не имеет значения, какой из них.
Получите информацию о пользователе
mssql
.sudo id mssql
Обратите внимание на
uid
,gid
а также группы.Выполните процедуру
sudo smbclient -L //NameOrIP/ShareName -U User
.-
<NameOrIP>
— это DNS-имя или IP-адрес сервера, на котором размещается общая папка SMB. -
<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, чтобы переключиться на пользователя root.
Установите общий ресурс SMB в папку данных SQL Server. В этом примере показан синтаксис для подключения к общему ресурсу SMB 3.0 на базе Windows Server.
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>
— это UID пользователяmssql
-
<mssqlGID>
— это GIDmssql
пользователя
-
Проверьте, было ли подключение выполнено успешно, выполнив команду 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>
— это IP-адрес или имя узла SMB. -
<ShareName>
— это имя общей папки. -
<FolderMountedIn>
— это имя папки, где подключен SMB.
-
Для объектов, отличных от системных баз данных, например пользовательских баз данных или резервных копий, выполните указанные ниже действия. Если используется только расположение по умолчанию, перейдите к шагу 14.
Перейдите в режим суперпользователя.
sudo -i
Создайте папку, которая будет использоваться сервером SQL Server.
mkdir <FolderName>
<FolderName> — имя папки. Если папка находится в другом месте, необходимо указать полный путь к ней. В следующем примере создается папка с именем
/var/opt/mssql/userdata
.mkdir /var/opt/mssql/userdata
Подключите общий ресурс SMB в каталог данных SQL Server. В этом примере показан синтаксис для подключения к общему ресурсу SMB 3.0 на базе Samba.
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>
— это UID пользователяmssql
-
<mssqlGID>
— это GIDmssql
пользователя.
-
Проверьте, было ли подключение выполнено успешно, с помощью команды mount без параметров.
Введите exit, чтобы выйти из режима суперпользователя.
Создайте в этой папке базу данных для тестирования. В приведенном ниже примере создается база данных с помощью sqlcmd, переключается контекст, проверяется наличие файлов на уровне ОС, а затем временная папка удаляется. Можно также использовать SSMS.
Отключение общей папки
sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
-
<IPAddressOrServerName>
— это IP-адрес или имя узла SMB. -
<ShareName>
— это имя общей папки. -
<FolderMountedIn>
— это имя папки, где подключен SMB.
-
Повторите эти действия на других узлах.
Теперь вы готовы настроить FCI.