mercoledì 5 novembre 2014

IL MODO MIGLIORE DI FARE UN BACKUP - SQL SERVER


Quando si sceglie di effettuare un backup di un server SQL possono essere effettuate 3 diverse operazioni. Ogni tipologia ha dei pregi e dei difetti, vediamo insieme quali sono le caratteristiche e i campi di applicazione.




Tre tipologie di backup

Come detto, esistono 3 tipologie di backup simili che possono essere effettuate utilizzando il software Microsoft SQL Server:

  1. Backup
  2. Detach/Attach
  3. Generazione Script

Backup

Il backup (con estensione .BAK per intenderci) è un file compresso che contiene la struttura e il contenuto di tutti gli oggetti del database (tabelle, viste, funzioni e procedure...), le sicurezze e le policy, i log di transazione, il diagramma e praticamente tutti gli oggetti che si trovano nel menu ad albero che viene visualizzato da Microsoft SQL Server Management Studio. Possono essere effettuati due tipi di backup: completo e differenziale.

A differenza del backup completo che contiene tutti gli oggetti dalla creazione ad oggi, il backup differenziale si basa sul salvataggio esclusivamente degli oggetti che sono stati cambiati o aggiunti dall'ultimo backup. Questo si traduce, al momento del restore, di dover caricare in ordine tutti i backup effettuati per ricostruire passo-passo la storia del database e il contenuto.

Pro:
  • portabilità (BAK è un file compresso, unico).
  • leggerezza (i file differenziali occupano poco spazio).
  • schedulazione (possono essere programmati automaticamente i backup).
  • disponibilità (è sempre possibile effettuare un backup anche di un database in uso)
Contro
  • strettamente legati alla versione di SQL Server in uso (un BAK 2012 non può essere ripristinato su un SQL 2005).
  • con grandi moli di dati è necessario un tempo proporzionato per completare le operazioni di backup e ripristino.

Detach - Attach

Il detach e l'attach compongono insieme una operazione di backup e ripristino. Se non lo sapete, Microsoft SQL Server mantiene il database relazionale sul file system attraverso dei file di tipo MDF (di solito sono due, ma ne possono essere configurati un numero a piacere). 

Quando viene effettuata l'operazione di detach non viene fatto altro che indicare al motore SQL che il database selzionato non è più in uso, da quel momento l'intero database si trova all'interno del file MDF che può essere copiato ed incollato su un'altra macchina senza problemi. L'operazione di attach non fa altro che indicare al motore SQL di iniziare ad usare quel file MDF e tutto risulta molto plug-and-play.

Pro:
  • rapidità (giusto il tempo di effettuare un copia incolla e tutto torna a funzionare)
  • consistenza (sai che tutto quello di cui hai bisogno è in un paio di file, non hai bisogno di risalire alla cronologia dei backup differenziali)
Contro:
  • strettamente legati alla versione di SQL Server in uso (un MDF 2012 non può fare un attach su un SQL 2005).
  • non compresso (sono file enormi!)
  • non disponibile (un database in uso potrebbe non rispondere velocemente alla richiesta di detach, dal momento che viene effettuato il detach le applicazioni collegate vanno in crash)

Generazione di script

la generazione di script invece non è propriamente un'operazione di backup e ripristino. Per chi ha esperienza nel mondo DBA sa che questo metodo è il più simile all'export di database di Oracle. 

La generazione di script è una operazione che, in maniera guidata, crea dei file di testo contenenti le istruzioni necessarie alla creazione e alla popolazione del database. Tuttavia è necessario specificare che questo non è un backup! il termine migliore e più calzante è che viene effettuata una "replica della struttura e del contenuto".

Pro:
  • trasparenza (sono query in sintassi SQL, abbastanza facili da leggere)
  • leggerezza (sono query in sintassi SQL, praticamente file di testo leggerissimi)
  • libertà di modifica (se è necessario fare un ripristino di un database con un nome diverso è sufficiente mettere le mani sullo script ed eseguire)
  • parzialità (è possibile salvare/ripristinare porzioni di database)
  • Non legato alle versioni di SQL Server in uso (uno script generato con SQL 2012 può essere eseguito su SQL 2005 senza problemi, nel caso in cui ci fossero basta sostituire le istruzioni non compatibili nel file e rieseguire)
Contro
  • trasparenza (se il database è criptato il contenuto di questo file è in chiaro)
  • libertà di modifica (una modifica sbagliata e tutto si sgretola al momento del ripristino)
  • non è un backup! (non sono contenuti i log di transazione e altre proprietà strettamente legate al database)
  • pericoloso (per generare correttamente il file è necessario saper utilizzare le proprietà avanzate del tool di generazione, ad esempio di default i trigger e gli indici non vengono generati!)

Conclusione

Abbiamo visto insieme quali sono le caratteristiche dei vari metodi di backup e ripristino che sono presenti. Non ho menzionato programmi di terze parti che permettono di effettuare queste funzionalità nè ho parlato dei tool di replicazione e ridondanza dei dati, queste cose non erano argomento dell'articolo. Detto questo è chiaro come NON ci sia un metodo "migliore", semplicemente dovete ripiegare caso per caso al metodo più adatto alle vostre necessità. Fatemi sapere che ne pensate lasciando un commento o attraverso la pagina ufficale Facebook.

fonti

Nessun commento:

Posta un commento