Pagine

domenica 22 aprile 2012

SQL Server 2012: Always On e Backup distribuito

SQL Server 2012 Always On Availability Group consente di "distribuire" tra il server Principal e le repliche Secondarie il carico di lavoro.
Ciò significa che per esempio possiamo fare in modo che che i client effettuino attività di reportistica su un determinato DB di replica senza
impattare sulle performance del Principal che in questo modo può far fronte a tutte le richieste degli utenti e portar avanti il lavoro sui DB Core business aziendali. Ma anche il backup può beneficiare di questa possibilità.

Abbiamo alcune restrizioni sui tipi di backup che possiamo implementare sulle repliche ma nonostante tutto il giochino ci torna molto utile.
Sui server di replica possiamo effettuare Backup Full, di file e filegroup a patto che si specifichi l'opzione COPY_ONLY.
Il Backup differenziale non è supportato sulle repliche, mentre il backup del transaction log è pienamente supportato.

Effettuare il backup del transaction è indispensabile per mantenere contenuta la dimensione del file *.ldf e per mantenere basso il numero dei virtual log.
Nel mio post precedente spiego perchè un numero elevato di Virtual log potrebbe degradare le performance.
La possibilità di effettuare il backup del T-Log sui server di replica concorre a mantenere le performance del server Principal ai livelli ottimali dato che solleva quest'ultimo dalla necessità di implementare anche questa attività che potrebbe essere anche molto onerosa in termini di I/O.(Meno I/O faccio più veloce vado !!)

Il backup del T-Log dovrebbe essere automatizzato ed implementato a intervalli regolari ma per poterlo fare sulle repliche dobbiamo configurare l'Availability Group in modo corretto.

Vediamo come fare.

Espandiamo il nodo Always On dal SQL Server Management Studio connesso al server primary e click destro sull'availability Group che vogliamo configurare






















Entriamo nella page Backup Preference e selezioniamo il'impostazione adeguata alle nostre esigenze. Qui trovate la descrizione completa dei valori.














Una volta selezionata la locazione d'esecuzione del backup e la Backup Priority la fase di configurazione dell'Availability Group è conclusa.
Dobbiamo ora creare i Job per effettuare il backup del T-Log.
Per evitare di dover creare un Job su ciascun nodo di replica possiamo appoggiarci alla funzionalità Multiserver Administration

Anzitutto scegliamo il server che sarà il Master della Multiserver Administration.




















A questo punto scegliamo i server Target su cui eseguiremo i job



















Ed ecco il risultato



















Ora si deve creare sul server Master il job d'esecuzione T-Log Backup.
A questo punto ci viene in aiuto la funzione sys.fn_hadr_backup_is_preferred_replica.
La funzione restituisce 1 se il database è la replica preferita su cui eseguire il backup, 0 in tutti gli altri casi.
Provate ad eseguire la seguente query su un ambiente Always On e scoprirete quale replica effettua il backup

Declare @ExecBackup bit
Set @ExecBackup = sys.fn_hadr_backup_is_preferred_replica('MyTestDatabase')
If (@ExecBackup = 1)
 Select 'Effettuo il backup su questo server'
else
 Select 'Il server non è la replica adeguata al backup'

Eseguendola su entrambi i miei nodi di replica ottengo il seguente risultato













Dal SQL Agent dell'istanza Master selezioniamo Multi-server Job e creiamo il nostro processo.





















Questo è il T-SQL per la creazione del nostro job :

Declare @ExecBackup bit
Set @ExecBackup = sys.fn_hadr_backup_is_preferred_replica('MyTestDatabase')
If (@ExecBackup = 1)
begin
 Backup Log MyTestDatabase to disk = '\\win8dc\MySharedFolderForAvailabiltyGroup\T_Log_Backup.trn' with compression
 Restore verifyonly from disk = '\\win8dc\MySharedFolderForAvailabiltyGroup\T_Log_Backup.trn'
end

L'istruzione Restore verifyonly esegue una verifica del file di backup, non si sa mai.... ;-)
















Scheduliamo quindi il job secondo le nostre policy




















e selezioniamo i Server Target


















Click su Ok ed il job è creato.

Sui server target ci troveremo il job e sarà su questi che il backup verrà eseguito, sollevando il principal da questa incombenza...


















Ciao

Luca

Nessun commento:

Posta un commento