Configurare l'istanza del cluster di failover di archiviazione SMB - SQL Server in Linux
Si applica a: SQL Server - Linux
Questo articolo illustra come configurare la risorsa di archiviazione SMB per un'istanza del cluster di failover in Linux.
Nel mondo non Windows, SMB è anche indicato come condivisione CIFS (Common Internet File System) e viene implementato tramite Samba. Nel mondo Windows, l'accesso a una condivisione SMB viene eseguito in questo modo: \\SERVERNAME\SHARENAME
Per le installazioni di SQL Server basate su Linux, la condivisione SMB deve essere montata come cartella.
Informazioni importanti sul server e sull'origine
Ecco alcuni suggerimenti e diverse note per l'uso corretto di SMB:
- La condivisione SMB può trovarsi in Windows, in Linux o anche in un'appliance, purché usi SMB 3.0 o versioni successive. Per altre informazioni su Samba e SMB 3.0 e per verificare se l'implementazione di Samba in uso è conforme a SMB 3.0, vedere SMB 3.0.
- La condivisione SMB deve essere a disponibilità elevata.
- Per la condivisione SMB è necessario impostare correttamente la sicurezza. Di seguito è riportato un esempio da
/etc/samba/smb.conf
, doveSQLData
è il nome della condivisione.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser
Istruzioni
Scegliere uno dei server che parteciperanno alla configurazione dell'istanza del cluster di failover. Non è rilevante quale.
Ottenere informazioni sull'utente
mssql
.sudo id mssql
Si notino
uid
,gid
e i gruppi.Eseguire
sudo smbclient -L //NameOrIP/ShareName -U User
.<NameOrIP>
è il nome DNS o l'indirizzo IP del server che ospita la condivisione SMB.<ShareName>
è il nome della condivisione SMB.
Per i database di sistema o per qualsiasi altro elemento archiviato nel percorso dati predefinito, seguire questa procedura. In caso contrario, andare al passaggio 5.
Verificare che SQL Server venga arrestato nel server su cui si sta lavorando.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Eseguire il comando per operare come utente con privilegi avanzati.
sudo -i
Passare all'utente
mssql
.su mssql
Creare una directory temporanea per archiviare i file di dati e di log di SQL Server.
mkdir <TempDir>
<TempDir>
è il nome della cartella. L'esempio seguente crea una cartella denominata/var/opt/mssql/tmp
.
mkdir /var/opt/mssql/tmp
Copiare i file di dati e di log di SQL Server nella directory temporanea.
cp /var/opt/mssql/data/* <TempDir>
<TempDir>
è il nome della cartella del passaggio precedente.
Verificare che i file si trovino nella directory.
ls <TempDir>
<TempDir> è il nome della cartella del passaggio D.
Eliminare i file dalla directory di dati di SQL Server esistente.
rm - f /var/opt/mssql/data/*
Verificare che i file siano stati eliminati.
ls /var/opt/mssql/data
Digitare exit per tornare all'utente ROOT.
Montare la condivisione SMB nella cartella di dati di SQL Server. Questo esempio illustra la sintassi per la connessione a una condivisione SMB 3.0 basata su 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>
è il nome del server con la condivisione SMB<ShareName>
è il nome della condivisione<UserName>
è il nome dell'utente con cui accedere alla condivisione<Password>
è la password dell'utente<domain>
è il nome di Active Directory<mssqlUID>
è l'UID dell'utentemssql
<mssqlGID>
è il GID dell'utentemssql
Verificare che il montaggio abbia avuto esito positivo eseguendo mount senza alcuna opzione.
mount
Passare all'utente
mssql
:su mssql
Copiare i file dalla directory temporanea
/var/opt/mssql/data
.cp /var/opt/mssql/tmp/* /var/opt/mssql/data
Verificare che i file siano presenti.
ls /var/opt/mssql/data
Immettere
exit
per non operare comemssql
.Immettere
exit
per non operare comeroot
.Avviare SQL Server. Se tutti gli elementi sono stati copiati correttamente e la sicurezza è applicata correttamente, SQL Server deve risultare avviato.
sudo systemctl start mssql-server sudo systemctl status mssql-server
Per eseguire altri test e assicurarsi che le autorizzazioni siano appropriate, creare un database. L'esempio seguente usa Transact-SQL ma è possibile usare SSMS.
Arrestare SQL Server e verificare che l'operazione sia stata eseguita. Se si intende aggiungere o testare altri dischi, arrestare SQL Server solo dopo che questi sono stati aggiunti e testati.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Solo se queste operazioni sono state completate, smontare la condivisione. In caso contrario, attendere il completamento dell'aggiunta o del test di tutti i dischi aggiuntivi.
sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
<IPAddressOrServerName>
è l'indirizzo IP o il nome dell'host SMB<ShareName>
è il nome della condivisione<FolderMountedIn>
è il nome della cartella in cui SMB è montato
Per elementi diversi dai database di sistema, ad esempio i database utente o i backup, seguire questa procedura. Se si usa solo il percorso predefinito, andare al passaggio 14.
Eseguire il comando per operare come utente con privilegi avanzati.
sudo -i
Creare una cartella che verrà usata da SQL Server.
mkdir <FolderName>
<FolderName> è il nome della cartella. Se non si trova nella posizione corretta, è necessario specificare il percorso completo della cartella. L'esempio seguente crea una cartella denominata
/var/opt/mssql/userdata
.mkdir /var/opt/mssql/userdata
Montare la condivisione SMB nella cartella di dati di SQL Server. Questo esempio illustra la sintassi per la connessione a una condivisione SMB 3.0 basata su 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>
è il nome del server con la condivisione SMB<ShareName>
è il nome della condivisione<FolderName>
è il nome della cartella creata nell'ultimo passaggio<UserName>
è il nome dell'utente con cui accedere alla condivisione<Password>
è la password dell'utente<mssqlUID>
è l'UID dell'utentemssql
<mssqlGID>
è il GID dell'utentemssql
.
Verificare che il montaggio abbia avuto esito positivo eseguendo mount senza alcuna opzione.
Digitare exit per non operare più come utente con privilegi avanzati.
Per eseguire il test, creare un database in tale cartella. L'esempio seguente usa sqlcmd per creare un database, cambiare il contesto e verificare che i file esistano a livello di sistema operativo e quindi elimina il percorso temporaneo. È possibile usare SSMS.
Smontare la condivisione
sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
<IPAddressOrServerName>
è l'indirizzo IP o il nome dell'host SMB<ShareName>
è il nome della condivisione<FolderMountedIn>
è il nome della cartella in cui SMB è montato.
Ripetere la procedura sugli altri nodi.
A questo punto è possibile configurare l'istanza del cluster di failover.