Configurar a instância de cluster de failover – NFS – SQL Server em Linux
Aplica-se a: SQL Server – 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, siga estas opções gerais de diretrizes:
rw
para garantir que seja possível ler a pasta e gravar nelasync
para assegurar gravações garantidas 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
Escolha um dos servidores que participarão da configuração da FCI. Não importa qual.
Verifique se o servidor pode ver as montagens no servidor NFS.
sudo showmount -e <IPAddressOfNFSServer>
<IPAddressOfNFSServer>
é o endereço IP do servidor NFS que você vai usar.
Para bancos de dados do sistema ou qualquer item armazenado na localização de dados padrão, siga estas etapas. Caso contrário, vá 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 que seja 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 de 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
Veja 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 sermssql
.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 isso sendo feito por meio do Transact-SQL. Isso pode ser feito por meio do SSMS.
Pare o SQL Server e verifique se ele está desligado.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Se você não estiver criando nenhuma outra montagem de NFS, desmonte o compartilhamento. 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 de NFS<FolderMountedIn>
é a pasta criada na etapa anterior.
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 de 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.
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 de NFS<FolderMountedIn>
é a pasta criada na etapa anterior.
Repita as etapas nos outros nós.