Partilhar via


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

Aplica-se a:SQL Server - Linux

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

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

Informações importantes sobre o servidor NFS

A fonte que hospeda NFS (um servidor Linux ou outra coisa) deve estar usando/sendo compatível com a versão 4.2 ou posterior. As versões anteriores não funcionam com o SQL Server no Linux.

Ao configurar a(s) pasta(s) a ser compartilhada no servidor NFS, certifique-se de que elas sigam estas opções gerais de diretrizes:

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

Certifique-se de que seus padrões de segurança sejam aplicados para acesso. Ao configurar a pasta, certifique-se de que apenas os servidores que participam da FCI devem ver a pasta NFS. No exemplo a seguir, um /etc/exports modificado em uma solução NFS baseada em Linux é mostrado, 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 pode ver a(s) montagem(ões) 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 coisa armazenada no local 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
      
    • Mude totalmente para ser o superusuário.

      sudo -i
      
    • Mude para ser o mssql utilizador.

      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 existente do SQL Server.

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

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

    • 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 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 executando o comando 'mount' sem opções.

      mount
      

      Aqui está 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)
      
    • Mude para o utilizador 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
      
    • Digite exit para não ser mssql.

    • Digite exit para não ser root.

    • 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
      
    • Crie um banco de dados para testar se a segurança está configurada corretamente. O exemplo a seguir mostra que sendo feito via Transact-SQL; pode ser feito através do SSMS.

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

    • Pare o SQL Server e verifique se ele está desligado.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Se não estiveres a criar outras montagens NFS, desmonta a partilha. Se estiver, 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 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 5.

    • Mude para ser 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 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
      
    • 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 montagem sem interruptores.

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

    • 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.

      Captura de tela do comando sqlcmd e da resposta ao 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 no(s) outro(s) nó(s).