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
Escolha um dos servidores que participarão da configuração da FCI. Não importa qual.
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.
-
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 sermssql
.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.
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.
-
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.
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.
-
Repita as etapas no(s) outro(s) nó(s).