Configurez une instance de cluster de basculement de stockage SMB pour SQL Server sur Linux

S’applique à :SQL Server sur Linux

Cet article explique comment configurer le stockage SMB pour une instance de cluster de basculement (FCI) sur Linux.

En dehors de Windows, SMB est également appelé partage Common Internet File System (CIFS), que Samba implémente. Sur Windows, vous accédez à un partage SMB avec le format \\SERVERNAME\SHARENAME. Pour les installations de SQL Server basées sur Linux, vous devez monter le partage SMB comme un dossier.

Informations importantes sur la source et le serveur

Suivez ces conseils pour utiliser SMB avec succès :

  • Le partage SMB peut être sous Windows, Linux ou un appliance tant qu’il utilise SMB 3.0 ou une version ultérieure. Pour plus d’informations sur Samba et SMB 3.0, consultez SMB 3.0 pour vérifier si votre implémentation de Samba est conforme à SMB 3.0.
  • Le partage SMB doit être hautement disponible.
  • Configurez correctement la sécurité sur le partage PME. L’exemple suivant provient de /etc/samba/smb.conf, où SQLData est le nom de la part.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser

Instructions

  1. Choisissez l’un des serveurs pour participer à la configuration FCI. Peu importe lequel.

  2. Obtenez des informations sur l'utilisateur mssql.

     sudo id mssql
    

    Notez les uid et gid et les groupes.

  3. Exécutez sudo smbclient -L //NameOrIP/ShareName -U User.

    • <NameOrIP> est le nom DNS ou l’adresse IP du serveur hébergeant le partage SMB.
    • <ShareName> est le nom du partage SMB.
  4. Pour les bases de données système ou tout ce qui est stocké dans l’emplacement des données par défaut, procédez comme suit. Sinon, ignorez l’étape 5.

    1. Assurez-vous que SQL Server est arrêté sur le serveur sur lequel vous travaillez.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Passez complètement au super-utilisateur.

      sudo -i
      
    3. Passez à l'utilisateur mssql.

      su mssql
      
    4. Créez un répertoire temporaire pour stocker les SQL Server données et les fichiers journaux.

      mkdir <TempDir>
      
      • <TempDir> est le nom du dossier. L’exemple suivant permet de créer un dossier nommé /var/opt/mssql/tmp.
      mkdir /var/opt/mssql/tmp
      
    5. Copiez les fichiers de données et de journaux de SQL Server dans le répertoire temporaire.

      cp /var/opt/mssql/data/* <TempDir>
      
      • <TempDir> est le nom du dossier de l’étape précédente.
    6. Vérifiez que les fichiers se trouvent dans le répertoire.

      ls <TempDir>
      

      <TempDir> est le nom du dossier de l’étape d.

    7. Supprimez les fichiers du répertoire de données SQL Server existant.

      rm -f /var/opt/mssql/data/*
      
    8. Vérifiez que les fichiers n’existent plus.

      ls /var/opt/mssql/data
      
    9. Entrer exit pour revenir à l’utilisateur root .

    10. Montez le partage SMB dans le dossier de données de SQL Server. Cet exemple illustre la syntaxe de connexion à un partage SMB 3.0 basé sur 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> est le nom du serveur avec le partage SMB
      • <ShareName> est le nom du partage
      • <UserName> est le nom de l’utilisateur pour accéder au partage
      • <Password> est le mot de passe de l’utilisateur
      • <domain> est le nom d’Active Directory
      • <mssqlUID> est l’UID de l’utilisateur mssql
      • <mssqlGID> est le GID de l’utilisateur mssql
    11. Vérifiez le support en le faisant mount fonctionner sans interrupteurs.

      mount
      
    12. Passez à l'utilisateur mssql.

      su mssql
      
    13. Copiez les fichiers à partir de l’annuaire temporaire /var/opt/mssql/data.

      cp /var/opt/mssql/tmp/* /var/opt/mssql/data
      
    14. Vérifiez que les fichiers sont présents.

      ls /var/opt/mssql/data
      
    15. Entrer exit pour quitter l’utilisateur mssql .

    16. Entrer exit pour quitter l’utilisateur root .

    17. Démarrez SQL Server. Si vous avez tout copié et appliqué correctement la sécurité, SQL Server démarre.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    18. Pour effectuer des tests supplémentaires, créez une base de données pour vous assurer que les autorisations sont correctes. L’exemple suivant utilise Transact-SQL ; vous pouvez utiliser SQL Server Management Studio (SSMS).

      Capture d'écran montrant la création de la base de données de test.

    19. Arrêtez SQL Server et vérifiez qu’il est arrêté. Si vous prévoyez d'ajouter ou de tester d'autres disques, ne fermez pas SQL Server tant que vous ne les avez pas ajoutés et testés.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    20. Si vous avez fini, démontez la part. Sinon, démontez après avoir fini de tester ou ajouter des disques.

      sudo umount //<IPAddressorServerName>/<ShareName>/<FolderMountedIn>
      
      • <IPAddressOrServerName> est l’adresse IP ou le nom de l’hôte SMB
      • <ShareName> est le nom du partage
      • <FolderMountedIn> est le nom du dossier dans lequel SMB est monté
  5. Pour des éléments autres que les bases de données système, tels que les bases de données utilisateur ou les sauvegardes, procédez comme suit. Si vous n’utilisez que l’emplacement par défaut, passez à l’étape 14.

    1. Passe au super-utilisateur.

      sudo -i
      
    2. Créez un dossier pour SQL Server.

      mkdir <FolderName>
      

      <FolderName> est le nom du dossier. Spécifiez le chemin complet du dossier s’il n’est pas au bon endroit. L’exemple suivant permet de créer un dossier nommé /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    3. Montez le partage SMB dans le dossier de données de SQL Server. Cet exemple illustre la syntaxe de connexion à un partage SMB 3.0 basé sur 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> est le nom du serveur avec le partage SMB
      • <ShareName> est le nom du partage
      • <FolderName> est le nom du dossier créé à la dernière étape
      • <UserName> est le nom de l’utilisateur pour accéder au partage
      • <Password> est le mot de passe de l’utilisateur
      • <mssqlUID> est l’UID de l’utilisateur mssql
      • <mssqlGID> est le GID de l’utilisateur mssql.
    4. Vérifiez le support en le faisant mount fonctionner sans interrupteurs.

    5. Entrer exit pour quitter le superutilisateur.

    6. Pour tester, créez une base de données dans ce dossier. L’exemple suivant sert sqlcmd à créer une base de données, à changer de contexte, à vérifier que les fichiers existent au niveau du système d’exploitation, puis à supprimer l’emplacement temporaire. Vous pouvez utiliser SSMS.

    7. Démontez le partage.

      sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
      
      • <IPAddressOrServerName> est l’adresse IP ou le nom de l’hôte SMB
      • <ShareName> est le nom du partage
      • <FolderMountedIn> est le nom du dossier dans lequel SMB est monté
  6. Répétez les étapes sur les autres nœuds.

Vous êtes maintenant prêt à configurer le FCI.