Partilhar via


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

Aplica-se a:SQL Server em Linux

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

No mundo não-Windows, o SMB também é referido como um compartilhamento CIFS (Common Internet File System) e implementado via Samba. No mundo Windows, o acesso a um compartilhamento SMB é feito da seguinte forma: \\SERVERNAME\SHARENAME. Para instalações do SQL Server baseadas em Linux, o compartilhamento SMB deve ser montado como uma pasta.

Informações importantes sobre a fonte e o servidor

Aqui estão algumas dicas e notas para usar o SMB com sucesso:

  • O compartilhamento SMB pode ser no Windows, Linux ou até mesmo de um dispositivo, desde que esteja usando SMB 3.0 ou versões posteriores. Para obter mais informações sobre o Samba e o SMB 3.0, consulte SMB 3.0 para ver se sua implementação do Samba é compatível com o SMB 3.0.
  • A quota SMB deve estar altamente disponível.
  • A segurança deve ser definida corretamente no compartilhamento SMB. Abaixo está um exemplo de /etc/samba/smb.conf, onde SQLData é o nome do compartilhamento.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser

Instruções

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

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

     sudo id mssql
    

    Observe os uid, gide os grupos.

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

    • <NameOrIP> é o nome DNS ou 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 coisa armazenada no local de dados padrão, siga estas etapas. Caso contrário, pule para a etapa 5.

    1. Verifique se o SQL Server está parado no servidor em que você está trabalhando.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Altere completamente para ser o superusuário.

      sudo -i
      
    3. Mude para ser o utilizador mssql.

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

      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 e os arquivos de log do SQL Server 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 existente do SQL Server.

      rm - f /var/opt/mssql/data/*
      
    8. Verifique se os arquivos foram excluídos.

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

    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 da pasta partilhada
      • <UserName> é o nome do usuário para acessar o compartilhamento
      • <Password> é a senha do usuário
      • <domain> é o nome do Ative Directory
      • <mssqlUID> é o UID do usuário mssql
      • <mssqlGID> é o GID do usuário mssql
    11. Verifique se a montagem foi bem-sucedida emitindo montagem sem interruptores.

      mount
      
    12. Mude para o utilizador 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. Digite exit para não ser mssql.

    16. Digite exit para não ser root.

    17. Inicie o SQL Server. Se tudo foi copiado corretamente e a segurança aplicada corretamente, o SQL Server deve mostrar como iniciado.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    18. Para testar mais, crie um banco de dados para garantir que as permissões estejam corretas. O exemplo a seguir usa Transact-SQL; você pode usar o 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ê vai adicionar ou testar outros discos, não desligue o SQL Server até que esses discos sejam adicionados e testados.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    20. Apenas se tiver terminado, desmonte a partilha. Caso contrário, desmonte depois de terminar o teste/adicionar quaisquer discos adicionais.

      sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
      
      • <IPAddressOrServerName> é o endereço IP ou o nome do host SMB
      • <ShareName> é o nome da pasta partilhada
      • <FolderMountedIn> é o nome da pasta onde o SMB está montado
  5. Para coisas diferentes de bancos de dados do sistema, como bancos de dados de usuários ou backups, siga estas etapas. Se estiver usando apenas o local padrão, pule para a Etapa 14.

    1. Torne-se o superusuário.

      sudo -i
      
    2. Crie uma pasta que será usada pelo SQL Server.

      mkdir <FolderName>
      

      <FolderName> é o nome da pasta. O caminho completo da pasta precisa ser especificado se 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 em 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 da pasta partilhada
      • <FolderName> é o nome da pasta criada na última etapa
      • <UserName> é o nome do usuário 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 se a montagem foi bem-sucedida emitindo montagem sem interruptores.

    5. Digite exit para não ser mais o superusuário.

    6. Para testar, crie um banco de dados nessa pasta. O exemplo a seguir usa sqlcmd para criar um banco de dados, alternar o contexto para ele, verificar se os arquivos existem no nível do sistema operacional e, em seguida, exclui o local temporário. 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 da pasta partilhada
      • <FolderMountedIn> é o nome da pasta onde o SMB está montado.
  6. Repita os passos nos demais nós.

Agora você está pronto para configurar a FCI.