Konfigurieren der Replikation eines Momentaufnahmeordners mit Freigaben

Gilt für:SQL Server unter Linux

Der Momentaufnahmeordner ist ein von Ihnen freigegebenes Verzeichnis. Agents, die aus diesem Ordner lesen bzw. in den Ordner schreiben, benötigen ausreichende Zugriffsberechtigungen.

Diagramm der SQL Server Replikation mithilfe einer Samba-Freigabe zwischen einem Publisher und Abonnenten.

Erläuterung der Replikation der Momentaufnahmeordner-Freigabe

Vor den Beispielen wird erläutert, wie SQL Server Samba-Freigaben in der Replikation verwendet. Im Folgenden finden Sie ein einfaches Beispiel hierfür.

  1. Samba-Freigaben sind so konfiguriert, dass die von den Replikations-Agents auf dem Herausgeber auf /local/path1 geschriebenen Dateien vom Abonnenten angezeigt werden können
  2. SQL Server ist so konfiguriert, dass beim Einrichten des Herausgebers auf dem Verteilungsserver Freigabepfade verwendet werden, sodass alle Instanzen auf //share/path zugreifen können.
  3. SQL Server findet den lokalen Pfad aus dem //share/path, um zu wissen, wo nach den Dateien gesucht werden soll.
  4. SQL Server liest/schreibt auf lokalen Pfaden, die durch eine Samba-Freigabe unterstützt werden.

Konfigurieren einer Samba-Freigabe für den Momentaufnahmeordner

Replikations-Agents benötigen ein gemeinsames Verzeichnis zwischen den Replikationshosts, um auf Momentaufnahmeordner zuzugreifen, die sich auf anderen Computern befinden. Beispielsweise befindet sich der Verteilungs-Agent bei der transaktionalen Pullreplikation auf dem Abonnenten, der Zugriff auf den Verteiler benötigt, um Artikel abzurufen. In diesem Abschnitt untersuchen wir ein Beispiel für die Konfiguration einer Samba-Freigabe auf zwei Replikationshosts.

Schritte

Als Beispiel konfigurieren wir einen Momentaufnahmeordner auf Host 1 (dem Verteiler), der mithilfe von Samba für Host 2 (den Abonnenten) freigegeben werden soll.

Installieren und Starten von Samba auf beiden Computern

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

Einrichten der Samba-Freigabe auf Distributor (Host1)

  1. Einrichten von Benutzernamen und Kennwort für Samba:

    sudo smbpasswd -a mssql
    
  2. Bearbeiten Sie /etc/samba/smb.conf, um den folgenden Eintrag hinzuzufügen, und füllen Sie share_name und Pfad aus.

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

    In der folgenden Tabelle werden die einzelnen Einstellungen beschrieben.

    Einstellung Beschreibung
    [mssql_data] Name des freigegebenen Verzeichnisses
    path Speicherort des Verzeichnisses, das wir freigeben möchten
    writable Ermitteln, ob die Freigabe von anderen Hosts beschreibbar ist
    create mask Linux-Berechtigungen für erstellte Dateien
    directory mask Linux-Berechtigungen für erstellte Verzeichnisse
    valid users Liste der Benutzer, die auf diese Freigabe zugreifen können

    Beispiel

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

Einbinden der Samba-Freigabe auf Abonnent (Host 2)

Bearbeiten Sie den Befehl mit den richtigen Pfaden, und führen Sie den folgenden Befehl auf machine2 aus:

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

Beispiel

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

Konfigurieren Sie SQL Server auf beiden Linux-Hosts, um die Snapshotsfreigabe zu verwenden.

Fügen Sie den folgenden Abschnitt zu mssql.conf auf beiden Computern hinzu. Verwenden Sie überall die Samba-Freigabe für die //share/path. In diesem Beispiel lautet er //host1/mssql_data.

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

Beispiel

Auf host1:

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

Auf host2:

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

Konfigurieren des Herausgebers mit freigegebenen Pfaden

  • Verwenden Sie beim Einrichten der Replikation den Freigabenpfad (Beispiel //host1/mssql_data
  • Ordnen Sie //host1/mssql_data einem lokalen Verzeichnis und der Zuordnung zu, die mssql.conf hinzugefügt wurde.