Configurer un dossier de captures instantanées de réplication avec des partages

Applies to :SQL Server sur Linux

Le dossier de captures instantanées correspond à un répertoire que vous définissez sous la forme d'un partage ; les agents qui lisent et écrivent dans le dossier doivent disposer des autorisations suffisantes pour pouvoir y accéder.

Diagramme de réplication SQL Server à l’aide d’un partage Samba entre un serveur de publication et un abonné.

Partage de dossiers de captures instantanées de réplication expliqué

Avant les exemples, voyons comment SQL Server utilise des partages samba dans la réplication. Vous trouverez ci-dessous un exemple de base de ce fonctionnement.

  1. Les partages Samba sont configurés de façon à ce que les fichiers écrits sur /local/path1 par les agents de réplication sur le serveur de publication puissent être vus par l’abonné
  2. SQL Server est configuré pour utiliser des chemins de partage lors de la configuration de l’éditeur sur le serveur de distribution afin que toutes les instances examinent le //share/path
  3. SQL Server recherche le chemin local à partir du //share/path pour savoir où rechercher les fichiers
  4. SQL Server lit/écrit sur des chemins locaux supportés par un partage samba

Configurer un partage Samba pour le dossier de captures instantanées

Les agents de réplication auront besoin d’un répertoire partagé entre les hôtes de réplication pour accéder aux dossiers de captures instantanées sur d’autres machines. Par exemple, dans la réplication à extraction transactionnelle, l’agent de distribution réside sur l’abonné, lequel nécessite l’accès au serveur de distribution pour obtenir des éléments. Dans cette section, nous allons voir un exemple de configuration d’un partage Samba sur deux hôtes de réplication.

Étapes

Par exemple, nous allons configurer un dossier de captures instantanées sur l’hôte 1 (le serveur de distribution) à partager avec l’hôte 2 (l’abonné) à l’aide de Samba.

Installer et démarrer Samba sur les deux machines

sudo yum install samba
sudo service smb start
sudo service smb status

Configurer le partage Samba sur le distributeur (host1)

  1. Configurer un utilisateur et un mot de passe pour Samba :

    sudo smbpasswd -a mssql
    
  2. Modifiez l’entrée /etc/samba/smb.conf suivante et renseignez les champs share_name et chemin d’accès :

    <[share_name]>
    path = </local/path/on/host/1>
    writable = yes
    create mask = 770
    directory mask
    valid users = mssql
    

    Le tableau suivant décrit chaque paramètre.

    Réglage Descriptif
    [mssql_data] Nom du répertoire partagé
    path Emplacement du répertoire que nous souhaitons partager
    writable Déterminer si le partage est accessible en écriture à partir d’autres hôtes
    create mask Autorisations Linux pour les fichiers créés
    directory mask Autorisations Linux pour les répertoires créés
    valid users Liste des utilisateurs qui peuvent se connecter à ce partage

    Exemple

    [mssql_data]
    path = /var/opt/mssql/repldata
    writable = yes
    create mask = 770
    directory mask = 770
    valid users = mssql
    

Monter le partage Samba sur l'abonné (host2)

Modifiez la commande avec les chemins d’accès corrects et exécutez la commande suivante sur machine2 :

sudo mount //<name_of_host_1>/<share_name> </local/path/on/host/2> -o user=mssql,uid=mssql,gid=mssql

Exemple

mount //host1/mssql_data /var/opt/mssql/repldata_shared -o user=mssql,uid=mssql,gid=mssql

user=mssql <- sets the login name for samba
uid=mssql  <- makes the mssql user as the owner of the mounted directory
gid=mssql  <- sets the mssql group as the owner of the mounted directory

Configurer SQL Server sur les deux hôtes Linux pour utiliser le partage d’instantanés

Ajoutez la section suivante à mssql.conf sur les deux machines. Utilisez où que ce soit le partage Samba pour le //share/path. Dans cet exemple, il s'agit de //host1/mssql_data.

[uncmapping]
//share/path = /local/path/on/hosts/

Exemple

Sur host1:

[uncmapping]
//host1/mssql_data = /local/path/on/hosts/1

Sur host2:

[uncmapping]
//host1/mssql_data = /local/path/on/hosts/2

Configurer le publieur avec des chemins d'accès partagés

  • Lors de la configuration de la réplication, utilisez le chemin d’accès de partage (exemple //host1/mssql_data
  • Mappez //host1/mssql_data à un répertoire local et ajoutez le mappage à mssql.conf.