Настройка экземпляра отказоустойчивого кластера хранилища 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
Instructions
Выберите один из серверов, которые будут включены в конфигурацию экземпляра отказоустойчивого кластера. Это не имеет значения, какой из них.
Получение сведений
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, чтобы переключиться на привилегированного пользователя.
Подключите общий ресурс 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>
— это идентификатор пользовательского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>
— это идентификатор пользовательскогоmssql
интерфейса пользователя<mssqlGID>
— это GIDmssql
пользователя.
Проверьте, было ли подключение выполнено успешно, с помощью команды mount без параметров.
Введите exit, чтобы выйти из режима суперпользователя.
Создайте в этой папке базу данных для тестирования. В приведенном ниже примере создается база данных с помощью sqlcmd, переключается контекст, проверяется наличие файлов на уровне ОС, а затем временная папка удаляется. Можно также использовать SSMS.
Отключение общей папки
sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
<IPAddressOrServerName>
— это IP-адрес или имя узла SMB.<ShareName>
— это имя общей папки.<FolderMountedIn>
— это имя папки, где подключен SMB.
Повторите эти действия на других узлах.
Теперь вы готовы настроить FCI.