Configurar o armazenamento SMB da instância de cluster de failover – SQL Server no Linux
Aplica-se a: SQL Server - Linux
Este artigo explica como configurar o armazenamento SMB para uma FCI (instância de cluster de failover) no Linux.
No mundo não Windows, o SMB é geralmente conhecido como um compartilhamento CIFS (Common Internet File System) e implementado por meio do Samba. No mundo do Windows, o acesso a um compartilhamento SMB é feito desta maneira: \\SERVERNAME\SHARENAME
. Para instalações do SQL Server baseadas em Linux, o compartilhamento SMB precisa ser montado como uma pasta.
Informações importantes de origem e servidor
Estas são algumas dicas e observações para usar o SMB com êxito:
- O compartilhamento SMB pode estar no Windows, no Linux ou, até mesmo, em um dispositivo, desde que esteja usando o SMB 3.0 ou versões posteriores. Para obter mais informações sobre o Samba e o SMB 3.0, confira SMB 3.0 para ver se a implementação do Samba está em conformidade com o SMB 3.0.
- O compartilhamento SMB deve estar altamente disponível.
- A segurança precisa ser definida corretamente no compartilhamento SMB. Veja abaixo um exemplo de
/etc/samba/smb.conf
, em queSQLData
é o nome do compartilhamento.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser
Instruções
Escolha um dos servidores que participarão da configuração da FCI. Não importa qual.
Obtenha informações sobre o usuário
mssql
.sudo id mssql
Observe
uid
,gid
e grupos.Execute
sudo smbclient -L //NameOrIP/ShareName -U User
.<NameOrIP>
é o nome DNS ou o endereço IP do servidor que hospeda o compartilhamento SMB.<ShareName>
é o nome do compartilhamento SMB.
Para bancos de dados do sistema ou qualquer item armazenado na localização de dados padrão, siga essas etapas. Caso contrário, vá para a etapa 5.
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 D.
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 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 do compartilhamento<UserName>
é o nome do usuário usado para acessar o compartilhamento<Password>
é a senha do usuário<domain>
é o nome do Active Directory<mssqlUID>
é o UID do usuáriomssql
<mssqlGID>
é o GID do usuáriomssql
Verifique se a montagem foi bem-sucedida emitindo o comando mount sem opções.
mount
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/mssql/data
Verifique se os arquivos estão lá.
ls /var/opt/mssql/data
Insira
exit
para não sermssql
.Insira
exit
para não serroot
.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
Para um teste adicional, crie um banco de dados para garantir que as permissões estejam corretas. O exemplo a seguir usa o Transact-SQL; você poderá usar o SSMS.
Pare o SQL Server e verifique se ele está desligado. Se for adicionar ou testar outros discos, não desligue o SQL Server enquanto eles não forem adicionados e testados.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Somente se tiver terminado, desmonte o compartilhamento. Caso contrário, desmonte-o depois de concluir o teste/a adição de outros discos.
sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
<IPAddressOrServerName>
é o endereço IP ou o nome do host SMB<ShareName>
é o nome do compartilhamento<FolderMountedIn>
é o nome da pasta em que o SMB está montado
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 14.
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 SMB na pasta de dados do SQL Server. Este exemplo mostra a sintaxe para se conectar a um compartilhamento SMB 3.0 baseado no 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 do compartilhamento<FolderName>
é o nome da pasta criada na última etapa<UserName>
é o nome do usuário usado para acessar o compartilhamento<Password>
é a senha do usuário<mssqlUID>
é o UID do usuáriomssql
<mssqlGID>
é o GID do usuáriomssql
.
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 //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
<IPAddressOrServerName>
é o endereço IP ou o nome do host SMB<ShareName>
é o nome do compartilhamento<FolderMountedIn>
é o nome da pasta em que o SMB está montado.
Repita as etapas nos outros nós.
Agora você está pronto para configurar a FCI.