Configurar uma instância de cluster de failover de armazenamento SMB para SQL Server em Linux

Aplica-se a: SQL Server no Linux

Este artigo explica como configurar o armazenamento SMB para uma instância de cluster de failover (FCI) em Linux.

Fora do Windows, o SMB também é chamado de compartilhamento do Sistema de Arquivos Comum da Internet (CIFS), que o Samba implementa. No Windows, você acessa um compartilhamento SMB com o formato \\SERVERNAME\SHARENAME. Para instalações do SQL Server baseadas em Linux, você deve montar o compartilhamento SMB como uma pasta.

Informações importantes de origem e servidor

Siga estas dicas para usar a SMB com sucesso:

  • O compartilhamento SMB pode ser no Windows, Linux ou em um appliance, desde que use SMB 3.0 ou posterior. Para mais informações sobre Samba e SMB 3.0, veja SMB 3.0 para verificar se sua implementação de Samba está em conformidade com SMB 3.0.
  • O compartilhamento SMB deve ter alta disponibilidade.
  • Defina a segurança corretamente no compartilhamento da SMB. O exemplo a seguir é de /etc/samba/smb.conf, onde SQLData é o nome da parte.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser

Instructions

  1. Escolha um dos servidores para participar da configuração da FCI. Não importa qual.

  2. Obtenha informações sobre o usuário mssql.

     sudo id mssql
    

    Observe uid, gid e os grupos.

  3. Executar sudo smbclient -L //NameOrIP/ShareName -U User.

    • <NameOrIP> é o nome DNS ou o endereço IP do servidor que hospeda o compartilhamento SMB.
    • <ShareName> é o nome do compartilhamento SMB.
  4. Para bancos de dados do sistema ou qualquer item armazenado na localização de dados padrão, siga essas etapas. Caso contrário, vá para a etapa 5.

    1. Certifique-se de que o SQL Server esteja parado no servidor em que você está trabalhando.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Mude totalmente para o superusuário.

      sudo -i
      
    3. Alterne para o usuário mssql.

      su mssql
      
    4. Crie um diretório temporário para armazenar os dados SQL Server e arquivos de log.

      mkdir <TempDir>
      
      • <TempDir> é o nome da pasta. O exemplo a seguir cria uma pasta chamada /var/opt/mssql/tmp.
      mkdir /var/opt/mssql/tmp
      
    5. Copie os dados SQL Server e os arquivos de log para o diretório temporário.

      cp /var/opt/mssql/data/* <TempDir>
      
      • <TempDir> é o nome da pasta da etapa anterior.
    6. Verifique se os arquivos estão no diretório.

      ls <TempDir>
      

      <TempDir> é o nome da pasta da etapa D.

    7. Exclua os arquivos do diretório de dados SQL Server existente.

      rm -f /var/opt/mssql/data/*
      
    8. Verifique se os arquivos não existem mais.

      ls /var/opt/mssql/data
      
    9. Enter exit para voltar para o root usuário.

    10. Monte o compartilhamento SMB na pasta de dados do SQL Server. Este exemplo mostra a sintaxe para se conectar a um compartilhamento SMB 3.0 baseado no 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> é o nome do servidor com o compartilhamento SMB
      • <ShareName> é o nome do compartilhamento
      • <UserName> é o nome do usuário usado para acessar o compartilhamento
      • <Password> é a senha do usuário
      • <domain> é o nome do Active Directory
      • <mssqlUID> é o UID do usuário mssql
      • <mssqlGID> é o GID do usuário mssql
    11. Verifique a montagem rodando mount sem interruptores.

      mount
      
    12. Alterne para o usuário mssql.

      su mssql
      
    13. Copie os arquivos do diretório temporário /var/opt/mssql/data.

      cp /var/opt/mssql/tmp/* /var/opt/mssql/data
      
    14. Verifique se os arquivos estão lá.

      ls /var/opt/mssql/data
      
    15. Enter exit para sair do mssql usuário.

    16. Enter exit para sair do root usuário.

    17. Inicie SQL Server. Se você copiou tudo e aplicou a segurança corretamente, o SQL Server começa.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    18. Para um teste adicional, crie um banco de dados para garantir que as permissões estejam corretas. O exemplo a seguir usa Transact-SQL; você pode usar o SQL Server Management Studio (SSMS).

      Captura de tela mostrando a criação do banco de dados de teste.

    19. Pare o SQL Server e verifique se ele está desligado. Se você pretende adicionar ou testar outros discos, não desligue o SQL Server até adicioná-los e testá-los.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    20. Se terminar, desmonte a parte. Caso contrário, desmonte depois de terminar de testar ou adicionar discos.

      sudo umount //<IPAddressorServerName>/<ShareName>/<FolderMountedIn>
      
      • <IPAddressOrServerName> é o endereço IP ou o nome do host SMB
      • <ShareName> é o nome do compartilhamento
      • <FolderMountedIn> é o nome da pasta em que o SMB está montado
  5. Para outros itens que não os bancos de dados do sistema, como bancos de dados de usuário ou backups, siga estas etapas. Se você usar apenas a localização padrão, pule para o Passo 14.

    1. Troque para o superusuário.

      sudo -i
      
    2. Crie uma pasta para o SQL Server usar.

      mkdir <FolderName>
      

      <FolderName> é o nome da pasta. Especifique o caminho completo da pasta se ela não estiver no local certo. O exemplo a seguir cria uma pasta chamada /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    3. Monte o compartilhamento SMB na pasta de dados do SQL Server. Este exemplo mostra a sintaxe para se conectar a um compartilhamento SMB 3.0 baseado no 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> é o nome do servidor com o compartilhamento SMB
      • <ShareName> é o nome do compartilhamento
      • <FolderName> é o nome da pasta criada na última etapa
      • <UserName> é o nome do usuário usado para acessar o compartilhamento
      • <Password> é a senha do usuário
      • <mssqlUID> é o UID do usuário mssql
      • <mssqlGID> é o GID do usuário mssql.
    4. Verifique a montagem rodando mount sem interruptores.

    5. Enter exit para sair do superusuário.

    6. Para testar, crie um banco de dados nessa pasta. O exemplo a seguir serve sqlcmd para criar um banco de dados, trocar o contexto para ele, verificar se os arquivos existem no nível do sistema operacional e então excluir a localização temporária. Você pode usar o SSMS.

    7. Desmontar o compartilhamento.

      sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
      
      • <IPAddressOrServerName> é o endereço IP ou o nome do host SMB
      • <ShareName> é o nome do compartilhamento
      • <FolderMountedIn> é o nome da pasta em que o SMB está montado.
  6. Repita as etapas nos demais nós.

Agora você está pronto para configurar a FCI.