Configurare la cartella snapshot della replica con le condivisioni

Si applica a:SQL Server su Linux

La cartella snapshot è una directory designata dall'utente come condivisione. Gli agenti che eseguono operazioni di lettura e scrittura in questa cartella devono avere autorizzazioni sufficienti per accedervi.

Diagramma della replica di SQL Server usando una condivisione Samba tra un server di pubblicazione e un sottoscrittore.

Spiegazione della condivisione della cartella snapshot per la replica

Prima degli esempi, verrà illustrato come SQL Server usa le condivisioni samba nella replica. Di seguito è riportato un semplice esempio del loro funzionamento.

  1. Le condivisioni Samba sono configurate in modo che i file scritti in /local/path1 dagli agenti di replica nel server di pubblicazione sono visibili per il sottoscrittore
  2. SQL Server è configurato per l'utilizzo dei percorsi di condivisione durante la configurazione dell'editore sul server di distribuzione in modo che tutte le istanze utilizzino il //share/path
  3. SQL Server trova il percorso locale dal //share/path per sapere dove cercare i file
  4. SQL Server legge/scrive su percorsi locali supportati da una condivisione samba

Configurare una condivisione Samba per la cartella snapshot

Per accedere alle cartelle snapshot in altri computer, gli agenti di replica hanno bisogno di una directory condivisa tra gli host di replica. Nella replica pull transazionale, ad esempio, l'agente di distribuzione risiede nel sottoscrittore, che per ottenere gli articoli richiede l'accesso al database di distribuzione. In questa sezione verrà illustrato un esempio di come configurare una condivisione Samba in due host di replica.

Passaggi

A titolo di esempio, si configurerà tramite Samba una cartella snapshot nell'host 1 (il server di distribuzione) da condividere con l'host 2 (il sottoscrittore).

Installare e avviare Samba in entrambi i computer

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

Configurare la condivisione Samba sul server di distribuzione (host 1)

  1. Impostare utente e password per Samba:

    sudo smbpasswd -a mssql
    
  2. Modificare il /etc/samba/smb.conf per includere la seguente voce e compilare i campi share_name e percorso:

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

    La tabella seguente descrive ogni impostazione.

    Impostazione Descrizione
    [mssql_data] Nome della directory condivisa
    path Posizione della directory da condividere
    writable Determinare se la condivisione è scrivibile da altri host
    create mask Autorizzazioni Linux per i file creati
    directory mask Autorizzazioni Linux per le directory che sono state create
    valid users Elenco di utenti che possono accedere a questa condivisione

    Esempio

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

Montare la condivisione Samba sul sottoscrittore (host2)

Modificare il comando con i percorsi corretti ed eseguire il comando seguente nel computer2:

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

Esempio

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

Configurare SQL Server su entrambi gli host Linux utilizzando la condivisione snapshot

Aggiungere la sezione seguente a mssql.conf in entrambi i computer. Usare ovunque la condivisione Samba per //share/path. In questo esempio si tratta di //host1/mssql_data.

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

Esempio

In host1:

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

In host2:

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

Configurare il publisher con percorsi condivisi

  • Quando si configura la replica, usare il percorso condivisione, ad esempio //host1/mssql_data
  • Effettua il mapping di //host1/mssql_data a una directory locale e il mapping viene aggiunto a mssql.conf.