Partager via


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

S’applique à :SQL Server - 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 montrant la réplication et le partage d’instantanés.

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

Avant les exemples, voyons comment SQL Server utilise des partages Samba pour 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 d’accès de partage lors de la configuration du serveur publication sur le serveur de distribution, de sorte que toutes les instances examinent le //share/path
  3. SQL Server recherche le chemin d’accès local du //share/path pour savoir où rechercher les fichiers
  4. SQL Server lit/écrit dans les chemins d’accès locaux sauvegardé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 par réception transactionnelle, l’agent de distribution réside sur l’abonné et nécessite l’accès au serveur de distribution pour obtenir des articles. 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 /etc/samba/smb.conf pour inclure l’entrée suivante et renseigner 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 de fichiers de captures instantanées

Ajoutez la section suivante à mssql.conf sur les deux machines. Utilisez n'importe où 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 l'éditeur avec des chemins d'accès de partage

  • 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 au mappage ajouté à mssql.conf.