Поделиться через


Настройка экземпляра отказоустойчивого кластера хранилища 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

Инструкции

  1. Выберите один из серверов, который будет участвовать в настройке FCI. Это не имеет значения, какой из них.

  2. Получите информацию о пользователе mssql.

     sudo id mssql
    

    Обратите внимание на uid, gidа также группы.

  3. Выполните процедуру sudo smbclient -L //NameOrIP/ShareName -U User.

    • <NameOrIP> — это DNS-имя или IP-адрес сервера, на котором размещается общая папка SMB.
    • <ShareName> — это имя общей папки SMB.
  4. Для системных баз данных или любых данных, хранящихся в стандартном расположении данных, выполните следующие действия. В противном случае перейдите к шагу 5.

    1. Убедитесь, что SQL Server остановлен на сервере, на который вы работаете.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Полностью перейдите в режим суперпользователя.

      sudo -i
      
    3. Переключитесь, чтобы стать mssql пользователем.

      su mssql
      
    4. Создайте временный каталог для хранения данных и файлов журналов SQL Server.

      mkdir <TempDir>
      
      • <TempDir> — это имя папки. В следующем примере создается папка с именем /var/opt/mssql/tmp.
      mkdir /var/opt/mssql/tmp
      
    5. Скопируйте данные и файлы журналов SQL Server во временный каталог.

      cp /var/opt/mssql/data/* <TempDir>
      
      • <TempDir> — это имя папки из предыдущего шага.
    6. Проверьте наличие файлов в папке.

      ls <TempDir>
      

      <TempDir> — это имя папки из шага d.

    7. Удалите файлы из существующего каталога данных SQL Server.

      rm - f /var/opt/mssql/data/*
      
    8. Проверьте, были ли файлы удалены.

      ls /var/opt/mssql/data
      
    9. Введите exit, чтобы переключиться на пользователя root.

    10. Установите общий ресурс 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> — это GID mssql пользователя
    11. Проверьте, было ли подключение выполнено успешно, выполнив команду mount без параметров.

      mount
      
    12. Переключитесь на пользователя mssql.

      su mssql
      
    13. Скопируйте файлы из временного каталога /var/opt/mssql/data.

      cp /var/opt/mssql/tmp/* /var/opt/mssql/data
      
    14. Проверьте наличие файлов.

      ls /var/opt/mssql/data
      
    15. Ввод exit не должен быть mssql.

    16. Ввод exit не должен быть root.

    17. Запустите SQL Server. Если все данные были скопированы и параметры безопасности применены правильно, сервер SQL Server должен отобразиться как запущенный.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    18. Для дальнейшего тестирования создайте базу данных, чтобы обеспечить правильность разрешений. В следующем примере используется Transact-SQL, но вы можете использовать SSMS.

      Снимок экрана: создание тестовой базы данных.

    19. Остановите SQL Server и убедитесь, что он завершён. Если вы собираетесь добавлять или тестировать другие диски, не завершая работу SQL Server, пока эти диски не будут добавлены и протестированы.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    20. Отключите общую папку, только если выполнены все задачи. В противном случае отсоедините после завершения тестирования или добавления любых дополнительных дисков.

      sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
      
      • <IPAddressOrServerName> — это IP-адрес или имя узла SMB.
      • <ShareName> — это имя общей папки.
      • <FolderMountedIn> — это имя папки, где подключен SMB.
  5. Для объектов, отличных от системных баз данных, например пользовательских баз данных или резервных копий, выполните указанные ниже действия. Если используется только расположение по умолчанию, перейдите к шагу 14.

    1. Перейдите в режим суперпользователя.

      sudo -i
      
    2. Создайте папку, которая будет использоваться сервером SQL Server.

      mkdir <FolderName>
      

      <FolderName> — имя папки. Если папка находится в другом месте, необходимо указать полный путь к ней. В следующем примере создается папка с именем /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    3. Подключите общий ресурс 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> — это GID mssql пользователя.
    4. Проверьте, было ли подключение выполнено успешно, с помощью команды mount без параметров.

    5. Введите exit, чтобы выйти из режима суперпользователя.

    6. Создайте в этой папке базу данных для тестирования. В приведенном ниже примере создается база данных с помощью sqlcmd, переключается контекст, проверяется наличие файлов на уровне ОС, а затем временная папка удаляется. Можно также использовать SSMS.

    7. Отключение общей папки

      sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
      
      • <IPAddressOrServerName> — это IP-адрес или имя узла SMB.
      • <ShareName> — это имя общей папки.
      • <FolderMountedIn> — это имя папки, где подключен SMB.
  6. Повторите эти действия на других узлах.

Теперь вы готовы настроить FCI.