Настройка резервного кластера SMB хранилища для SQL Server на Linux

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

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

Вне Windows SMB также называют shared Internet File System (CIFS) share, который реализует Samba. В Windows вы получаете доступ к SMB-share-серверу с форматом \\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.
  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. Enter 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; вы можете использовать SQL Server Management Studio (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.