VENDITE: 1-800-867-1389

Considerazioni sulla disponibilità elevata e sul ripristino di emergenza con il database SQL di Azure

Aggiornamento: aprile 2014

Quando si esegue la migrazione del database di SQL Server locale al database SQL di Azure (database SQL) si pensa spesso a come poter implementare una strategia di backup e ripristino per proteggere i dati da eventuali errori dell'utente, dell'applicazione e dell'hardware, da un eventuale arresto del data center per calamità naturali o da altre emergenze del database. A differenza delle distribuzioni locali, il database SQL è progettato per mascherare le operazioni e la gestione di file di database fisici per gli amministratori di database. Si noti che un server di database SQL è un server logico tramite cui viene definito un gruppo di database. È possibile che i database associati al server di database SQL si trovino in computer fisici distinti nel data center di Microsoft. Lo spazio di un singolo database fisico potrebbe venir condiviso da un singolo database logico con un altro database logico. In un ambiente Azure multi-tenant, gli strumenti di backup e ripristino di SQL Server tradizionali non funzionano.

Autori: Kun Cheng, Selcin Turkarslan
Revisori: Steve Howard, Adrian Bethune

Ogni istanza del database SQL dispone di tre repliche, una primaria e due secondarie, che si trovano in tre computer fisici diversi all'interno di un data center. Tutte le operazioni di lettura e scrittura passano attraverso la replica primaria e tutte le modifiche vengono replicate in modo asincrono nelle repliche secondarie.

Nel database SQL viene utilizzato uno schema di commit basato su quorum in base al quale i dati vengono scritti nella replica primaria e in una replica secondaria prima che il commit della transazione venga considerato eseguito. In caso di errore hardware nella replica primaria, l'errore in questione viene rilevato dall'infrastruttura del database SQL e viene eseguito il failover su una delle repliche secondarie. Pertanto, in un data center sono presenti almeno due copie fisiche dei dati coerenti a livello di transazione. Con le tre repliche per ogni istanza del database SQL di Microsoft Azure i dati vengono protetti da eventuali errori di singoli server, dispositivi o connettività di rete. Oltre alle repliche ridondanti, nell'infrastruttura del database SQL di Microsoft Azure viene mantenuto un dato numero di backup eseguiti a incrementi di cinque minuti per tutti i database nel data center. Questi backup vengono archiviati nel data center per essere protetti da eventuali errori contemporanei o irreversibili di hardware e sistemi.

L'ambiente del database SQL è progettato per mantenere il server disponibile e per garantire l'integrità dei dati in caso di errori hardware. Durante un evento di failover, è possibile che un'istanza del database SQL sia inaccessibile per un breve momento. L'applicazione deve disporre della logica di ripetizione tentativi per gestire eventi di failover di questo tipo. Tuttavia, è possibile utilizzare la stessa stringa di connessione per ristabilire la connessione dopo il failover sulla replica secondaria. Per ulteriori informazioni sulla gestione degli errori di perdita della connessione, vedere l'articolo relativo alla gestione delle risorse del database SQL di Azure nel Wiki di TechNet.

Un errore da parte dell'utente o dell'applicazione è uno degli scenari di danni o di perdita di dati più comuni in molte applicazioni software. Un utente potrebbe per errore eliminare una tabella o un'applicazione o inviare due volte una transazione. Questi tipi di errori sono difficili da controllare e correggere. Per risolvere problemi di questo tipo, è possibile utilizzare gli strumenti e i servizi riportati di seguito:

  • Servizio di ripristino self-service (per SKU Premium/Standard/Basic)

  • Copia del database

  • Servizio di importazione/esportazione del database SQL

  • BCP e SQL Server Integration Services

Ripristino self-service. Con l'anteprima corrente del database SQL è possibile ripristinare un singolo database a un preciso momento all'interno di determinate finestre temporali. Tali finestre occupano lo spazio di un giorno e possono coprire un arco di tempo massimo di 35 giorni. Per ulteriori dettagli, leggere la pagina relativa al backup e ripristino del database SQL di Azure.

Con la copia del database è possibile creare una copia del database in uso nello stesso server o in uno differente nello stesso data center. È un'operazione asincrona, online e coerente dal punto di vista transazionale. Dal momento che si tratta di un'operazione asincrona, è possibile eseguire il comando di copia e, successivamente, monitorarne lo stato eseguendo una query sulla vista di sistema sys.dm_database_copies (database SQL).

Per copiare un'istanza del database SQL, l'account di accesso deve essere un membro del ruolo dbmanager a livello server nel server di destinazione e proprietario del database di origine nel server di origine. Per l'account di accesso è necessario utilizzare nome e password uguali su entrambi i server del database SQL: origine e destinazione. La frequenza con cui si sceglie di copiare il database può variare e dipende dalle esigenze aziendali. Per il recupero da errori di utenti o applicazioni, è consigliabile creare una copia giornaliera e mantenere due o tre copie in esecuzione a rotazione eliminando ogni giorno la copia meno recente dopo il completamento della nuova copia.

Notare che, sebbene si sia consigliato di effettuare copie giornaliere, è possibile copiare il database più frequentemente. È consigliabile che l'operazione di copia del database non venga eseguita più di una volta all'ora. Tramite ogni processo di copia del database, che viene eseguito in modo indipendente da tutti gli altri processi di copia del database, verrà creata una copia del database coerente dal punto di vista della transazione al momento del completamento del processo di copia. Ogni copia viene presa in considerazione per il calcolo del limite di 150 database per ogni server di database SQL e verrà addebitata come database separato. Pertanto, se si eseguono copie troppo frequentemente si determina una situazione di possibile esaurimento di database disponibili nel proprio account e pagare inutilmente per copie di database che sono quasi identiche. Per ulteriori informazioni, vedere Procedura: copiare i database nella pagina di MSDN Library relativa al database SQL.

Oltre alla copia del database, è possibile utilizzare il SQL Database Import/Export Service. Tramite questo servizio è possibile importare o esportare sia i dati sia lo schema in un pacchetto con estensione .bacpac. Il pacchetto è in un formato compresso e in esso sono contenuti tutti gli oggetti compatibili con il database SQL, quali tabelle, viste, indici, vincoli, trigger, stored procedure, account di accesso, utenti e così via. Tramite il servizio è possibile importare o esportare direttamente file BACPAC tra un'istanza del database SQL e l'archiviazione BLOB di Azure. È possibile accedere al servizio di importazione/esportazione tramite il portale di gestione di Azure. Se si desidera importare o esportare direttamente dalle istanze locali di SQL Server al database SQL e viceversa senza l'utilizzo dell'archiviazione BLOB di Azure, utilizzare le classi fornite nello spazio dei nomi Microsoft.SqlServer.Dac.

A differenza della copia del database, tramite il servizio di importazione/esportazione non viene creato un backup coerente a livello di transazione. Per eseguire un backup, si consiglia di bloccare il database e di arrestare le transazioni prima di esportare i dati e lo schema oppure, in alternativa, utilizzare la funzionalità di copia del database per creare innanzitutto una copia coerente dal punto di vista transazionale ed eseguire l'esportazione dalla copia. Per ulteriori informazioni sull'importazione e sull'esportazione, vedere Procedura: importare ed esportare un database.

Anche Bulk copy utility (BCP.exe), SQL Server Integration Services (SSIS) e System.Data.SqlClient.SqlBulkCopy sono simili al Import/Export Service. Attualmente il database SQL supporta BCP, l'API della copia bulk e SSIS per lo spostamento dei dati. È necessario creare oggetti dello schema nel database SQL prima di caricare i dati. Se si utilizza BCP o SSIS come meccanismo di copia bulk è possibile controllare quali oggetti vengono spostati da un database e quali dati vengono spostati dagli oggetti in questione. Inoltre, è possibile specificare parametri differenti quali le dimensioni del batch, le dimensioni del pacchetto e il numero di flussi per ottenere la migliore velocità effettiva a seconda della larghezza di banda di rete e della latenza.

Come protezione contro la perdita del data center in caso di emergenza, è necessario creare archivi fuori sede di backup dei database all'esterno del data center, in cui è distribuita l'applicazione di database. Per eseguire tali operazioni, si consiglia di utilizzare le seguenti opzioni:

  • Replica geografica per SKU Premium e Standard.

  • Ripristino in una regione alternativa di Azure per SKU Basic.

  • Copia del database e servizio di importazione/esportazione del database SQL (descritto nella sezione precedente) per SKU Web o Business.

Per ulteriori dettagli sulla replica geografica, vedere la pagina relativa alla replica geo attiva per il database SQL di Azure. Nelle edizioni Web e Business dei database di Azure, per gestire la strategia complessiva di backup e ripristino si consiglia di utilizzare gli strumenti riportati di seguito:

  • Implementare una strategia di backup e ripristino per gestire gli errori dell'utente e dell'applicazione tramite:

    • Copia del database

    • Servizio di importazione/esportazione del database SQL

    • BCP o SQL Server 2008 Integration Services

  • Implementare una strategia di backup e ripristino avanzata per gestire una perdita generalizzata delle strutture del data center tramite:

    • Servizio di importazione/esportazione per eseguire la migrazione di una copia del database in uno o più data center secondari e, facoltativamente, all'interno della propria istanza locale di SQL Server.

Per ulteriori informazioni sulle opzioni di backup, ripristino e ripristino di emergenza in Microsoft Azure, vedere l'articolo relativo alla continuità aziendale nel database SQL di Azure e l'articolo contenente le informazioni tecniche sulla continuità aziendale di Microsoft Azure in MSDN Library.

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Mostra:
© 2014 Microsoft