Настройка отказоустойчивого экземпляра кластера в Linux (SMB)

Применимо к:SQL Server в Linux

В этой статье описывается, как настроить хранилище SMB для экземпляра отказоустойчивого кластера в Linux.

За пределами Windows SMB также называют общим ресурсом Common Internet File System (CIFS), который реализует Samba. В Windows вы получаете доступ к общему ресурсу SMB в формате \\SERVERNAME\SHARENAME. Для установок SQL Server на базе Linux необходимо монтировать SMB-share как папку.

Важные сведения об источнике и сервере

Следуйте этим советам, чтобы успешно использовать SMB:

  • SMB-share может быть на Windows, Linux или устройстве, если используется SMB 3.0 или новее. Для получения дополнительной информации о Samba и SMB 3.0 смотрите SMB 3.0 , чтобы проверить, соответствует ли ваша реализация Samba SMB 3.0.
  • Общая сетевая папка SMB должна обеспечивать высокую доступность.
  • Правильно настройте безопасность на SMB share. Следующий пример взят из /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.
    • <User> — это имя пользователя, который получает доступ к share.
  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> — это имя папки из предыдущего шага.
    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/tmp.

      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; вы можете использовать SQL Server Management Studio (SSMS).

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

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

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

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

    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 <FolderMountedIn>
      
      • <FolderMountedIn> — полный путь папки, куда монтируется SMB.
  6. Повторите шаги на других узлах.

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