Estratti del libro “Sopra le Nuvole”: Windows Azure SQL Data Sync

Una possibilità interessante è quella di replicare dei dataset tra diversi database, siano essi all’interno di istanze SQL Server (on-premises o su una Virtual Machine in Windows Azure) o su Windows Azure SQL Database. Questa possibilità è offerta da SQL Data Sync e non richiede l’uso di una connessione VPN tra i diversi SQL Server coinvolti nella replica. Vediamo come funziona.

Si inizia con la creazione di un agente di replica, al quale andranno poi agganciati i database da cui replicare i dataset. Nel caso di SQL Server è necessario scaricare un agente da installare sulla macchina che ospita l’istanza in questione. Il tutto è fattibile collegandosi al portale Windows Azure e, nella sezione SQL DATABASE, tab SYNC, selezionando NEW SYNC AGENT.

clip_image002

clip_image004

L’installazione dell’agente, scaricabile dal link disponibile sul wizard di setup, richiede un account con privilegi di accesso alla rete per poter effettuare le repliche dei dati. Una volta creato l’agente è richiesta la generazione, dal pannello di controllo, di una chiave per poter comunicare con il servizio.

clip_image006

Questa chiave andrà poi copiata e incollata nel pannello di gestione dell’agente sul computer locale.

clip_image008

Ora è necessario registrare un database dell’istanza locale per renderlo parte di una replica di sincronizzazione. Per questa dimostrazione utilizzeremo il database mydb1 che abbiamo importato precedentemente.

clip_image010

Per verificare che il servizio remoto sia raggiungibile è possibile usare il pulsante Ping Sync Service.

clip_image012

Ora che abbiamo verificato il corretto funzionamento della parte on-premises possiamo creare un nuovo gruppo di sincronizzazione aggiungendo i database e i dataset che intendiamo sincronizzare. Per fare questo torniamo sul portale e selezioniamo, dal menu in basso del pannello di controllo del nostro SQL Data Sync, l’opzione NEW SYNC GROUP.

clip_image014

Dopo aver scelto il nome del gruppo di sincronizzazione ci viene chiesto di scegliere il database che farà da HUB. L’hub può essere visto come il gestore logico della sincronizzazione, rappresenta il punto di riferimento nel caso in cui si dovessero verificare dei conflitti di sincronizzazione. Proprio l’opzione CONFLICT RESOLUTION ci permette di scegliere quali dati verranno tenuti nel caso in cui si verifichino modifiche agli stessi record in database differenti.

1

L’ultimo passaggio del wizard ci consente di aggiungere un REFERENCE DATABASE al gruppo di sincronizzazione. In questo caso, scegliendo un database on-premise, non ci vengono chiesti utente e password. Ci viene chiesto di scegliere la tipologia di replica che consente le seguenti scelte:

  • Bi-direzionale – i dati vengono replicati in entrambe le direzioni
  • Sync to the HUB – Il reference database manda i dati all’HUB. Eventuali altre modifiche mandate all’HUB da altri database non vengono ricevute
  • Sync from the HUB – Il database riceve gli aggiornamenti dall’HUB. Non manda update all’HUB

clip_image018

Una volta completato il wizard di configurazione il pannello di controllo del Sync Group conterrà alcune informazioni importanti.

  • REFERENCES. La lista dei database che fanno parte del Sync Group e le relative proprietà.
  • CONFIGURE. Permette di scegliere tra sincronizzazione manuale o automatica. Nel caso della sincronizzazione automatica è possibile scegliere l’intervallo di tempo tra una sincronizzazione e l’altra.
  • SYNC RULES. Contiene le regole di sincronizzazione. In sostanza è possibile scegliere le tabelle e i relativi campi da aggiungere alla replica.
  • PROPERTIES. Contiene alcune informazioni sul Sync Group, come per esempio il nome della sottoscrizione a cui appartiene.
  • LOGS. Contiene i log delle sincronizzazioni.

2

Iniziamo con il creare una regola di sincronizzazione, mettendo la tabella tbl1 dei due database in sync.

 

3

Ora che il dataset è stato creato possiamo per esempio scegliere di configurare la sincronizzazione automatica del dataset, settandola ogni 5 minuti.

clip_image024

La configurazione è ora completa. Come si può notare dall’immagine successiva il sistema ha aggiunto a entrambi i database delle tabelle di appoggio che verranno utilizzate per rendere il meccanismo di replica funzionante.

clip_image026

Per fare una prova possiamo aggiungere un record nel database locale e verificare se il dato viene replicato in automatico nel database su Windows Azure SQL Database.

clip_image028

L’attesa dei 5 minuti impostati nel wizard oppure il lancio di una sincronizzazione manuale replicheranno i dati sull’HUB, come è possibile vedere facendo una query sul database online.

 

4

clip_image032

Francesco