Compartilhar via


Configurar a instância de cluster de failover - NFS - SQL Server em Linux

Aplica-se a:SQL Server no Linux

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

NFS, ou Network File System, é um método comum de compartilhamento de discos no mundo Linux, mas não do Windows. Semelhante ao iSCSI, o NFS pode ser configurado em um servidor ou algum tipo de dispositivo ou unidade de armazenamento, contanto que atenda aos requisitos de armazenamento para SQL Server.

Informações importantes do servidor NFS

O NFS de hospedagem de origem (um servidor Linux ou algo diferente) deve estar usando/em conformidade com a versão 4.2 ou posterior. As versões anteriores não funcionam com o SQL Server no Linux.

Ao configurar as pastas a serem compartilhadas no servidor NFS, verifique se elas seguem estas diretrizes de opções gerais:

  • rw para garantir que a pasta possa ser lida e gravada
  • sync para garantir gravações na pasta
  • Não use no_root_squash como opção; isso é considerado um risco de segurança
  • Verifique se a pasta tem todos os direitos (777) aplicados

Verifique se seus padrões de segurança foram impostos para acesso. Ao configurar a pasta, verifique se apenas os servidores que participam do FCI devem ver a pasta NFS. No exemplo a seguir, mostramos uma modificação de /etc/exports em uma solução NFS baseada em Linux, onde a pasta é restrita a FCIN1 e FCIN2.

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients. See export(5).
#
/var/nfs/fci1   FCIN1(rw,sync) FCIN2(rw,sync)

Instruções

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

  2. Verifique se o servidor consegue ver os pontos de montagem no servidor NFS.

    sudo showmount -e <IPAddressOfNFSServer>
    
    • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar.
  3. Para bancos de dados do sistema ou qualquer item armazenado na localização de dados padrão, siga estas etapas. Caso contrário, pule para a Etapa 4.

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

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Alterne totalmente para o superusuário.

      sudo -i
      
    • Alterne para ser o usuário mssql.

      su mssql
      
    • 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
      
    • 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.
    • Verifique se os arquivos estão no diretório.

      ls TempDir
      
      • <TempDir> é o nome da pasta da etapa anterior.
    • Exclua os arquivos do diretório de dados do SQL Server existente.

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

      ls /var/opt/mssql/data
      
    • Digite exit para voltar ao usuário raiz.

    • Monte o compartilhamento NFS na pasta de dados do SQL Server.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento NFS. A sintaxe de exemplo a seguir corresponde às informações de NFS da Etapa 2.
      mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
    • Verifique se a montagem foi bem-sucedida emitindo o comando mount sem opções.

      mount
      

      Esta é a saída esperada.

      10.201.202.63:/var/nfs/fcil on /var/opt/mssql/data type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard, proto=tcp,port=0,timeo=14, retrans=2,sec=sys,clientaddr=10.201.202.128,local lock=none, addr=10.201.202.63)
      
    • Alterne para o usuário mssql.

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

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

      ls /var/opt/mssql/data
      
    • Insira exit para não ser mssql.

    • Digite exit para não ser raiz.

    • Inicie o SQL Server. Se tudo for copiado corretamente e a segurança for aplicada corretamente, o SQL Server deverá ser mostrado como iniciado.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    • Crie um banco de dados para testar se a segurança está configurada corretamente. O exemplo a seguir mostra que isso está sendo feito por meio do Transact-SQL. Ele também pode ser feito por meio do SSMS (SQL Server Management Studio).

      Captura de tela mostrando como criar banco de dados de teste.

    • Interrompa o SQL Server e verifique se ele foi desligado.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Se você não estiver criando outras montagens NFS, desmonte o compartilhamento. Se estiver criando outras montagens, não desmonte.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento NFS
      • <FolderMountedIn> é a pasta criada na etapa anterior.
  4. 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 estiver usando apenas a localização padrão, vá para a Etapa 5.

    • Alterne para o superusuário.

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

      mkdir <FolderName>
      
      • <FolderName> é o nome da pasta. O caminho completo da pasta precisará ser especificado se não estiver na localização correta.

      O exemplo a seguir cria uma pasta chamada /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    • Monte o compartilhamento NFS na pasta que foi criada na etapa anterior.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento NFS
      • <FolderToMountIn> é a pasta criada na etapa anterior.

      O exemplo a seguir monta o compartilhamento NFS.

      mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
      
    • Verifique se a montagem foi bem-sucedida emitindo o comando mount sem opções.

    • Digite exit para deixar de ser o superusuário.

    • Para testar, crie um banco de dados nessa pasta. O exemplo a seguir usa o 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 a localização temporária. Você pode usar o SSMS.

      Captura de tela do comando sqlcmd e da resposta para o comando.

    • Desmontar o compartilhamento

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento NFS
      • <FolderMountedIn> é a pasta criada na etapa anterior.
  5. Repita as etapas nos demais nós.