2009-03-04 16 views
30

Ho un database che contiene i dati più recenti e voglio replicare il contenuto del database in altri server. A causa di motivi non tecnici, non posso utilizzare direttamente la funzione di replica o la funzione di sincronizzazione per la sincronizzazione con altre istanze di SQL Server.Backup/ripristino di SQL Server vs. scollegamento/collegamento

Ora, ho due soluzioni e voglio imparare i pro e i contro per ciascuna soluzione. Grazie!

Soluzione 1: scollegare il database di origine che contiene i dati più recenti, quindi copiarli sui server di destinazione che richiedono i dati più recenti e allegare il database ai server di destinazione;

Soluzione 2: eseguire un backup completo del server di origine per l'intero database, quindi copiare i dati nei server di destinazione e eseguire un ripristino completo sul lato del server di destinazione.

grazie in anticipo, George

+0

Cosa succede se i dati vengono modificati nei database di destinazione o sono di sola lettura? – RobS

+0

Sono presenti solo modifiche al database di origine. Qualche consiglio per quale soluzione è meglio? – George2

risposta

24

il distacco/Attach opzione è spesso più veloce di esecuzione di un backup in quanto non ha bisogno di creare un nuovo file. Pertanto, il tempo dal Server A al Server B è quasi esclusivamente il tempo di copia del file.

L'opzione Backup/Ripristino consente di eseguire un backup completo, ripristinarlo, quindi eseguire un backup differenziale che consente di ridurre i tempi di inattività tra i due.

Se la replica dei dati che stai cercando, vuol dire che vuoi che il database funzioni in entrambe le posizioni? In tal caso, probabilmente si desidera l'opzione di backup/ripristino che lascerà il database corrente completamente funzionante.

MODIFICA: Giusto per chiarire alcuni punti. Con i tempi di inattività intendo che se si sta migrando un database da un server a un altro, in genere si fermeranno le persone che lo utilizzano mentre è in transito. Pertanto, dal punto "stop" sul server A fino al punto "start" sul server B questo potrebbe essere considerato downtime. In caso contrario, le azioni eseguite sul database sul server A durante il transito non verranno replicate sul server B.

Riguardo al "creare un nuovo file". Se si scollega un database, è possibile copiare immediatamente il file MDF. È già pronto per essere copiato. Tuttavia, se si esegue un backup, è necessario attendere che il file .BAK venga creato e quindi spostarlo nella sua nuova posizione per un ripristino. Di nuovo tutto ciò si riduce a questa è una copia istantanea o una migrazione.

+0

Due confusioni: 1. "non è necessario creare un nuovo file" - nuovo file intendi? 2. "È possibile ridurre il tempo di attesa tra i due" - perché c'è un tempo di inattività? Penso che per SQL Server che esegue il backup completo e il modello di recupero completo, non vi siano tempi di inattività per entrambi i server di origine/destinazione? – George2

+0

"Se la replica dei dati che stai cercando, vuol dire che vuoi che il database funzioni in entrambe le posizioni?" - Sia il server di origine che quello di destinazione potrebbero sopportare tempi di inattività, ma voglio ridurre al minimo i tempi di inattività del server di destinazione. Qualche nuovo consiglio sulla migliore soluzione? – George2

+0

Grazie Robin, leggi i tuoi commenti modificati. Quindi il nuovo file intendi il file .bak? Un'altra domanda, quando si utilizza attach/detach, ci saranno dei registri delle transazioni sia sul server del database di origine che sul server del database di destinazione? – George2

4

Soluzione 2 sarebbe la mia scelta ... In primo luogo perché non creerà alcun tempo di inattività sul database di origine. L'unico svantaggio che riesco a vedere è che, a seconda del modello di recupero del database, il log delle transazioni verrà troncato nel senso che se si desidera ripristinare i dati dal log delle transazioni che si sarebbero riempiti, si dovrebbe utilizzare il file di backup.

MODIFICA: trovato un collegamento piacevole; http://sql-server-performance.com/Community/forums/p/5838/35573.aspx

+0

Posso assicurarmi durante il backup del database di origine, non ci sono operazioni di inserimento/cancellazione/aggiornamento e sul database di destinazione, è sempre in sola lettura (tutte le modifiche sono sul database di origine). Quindi, nel mio caso, nessun registro delle transazioni per il backup completo sul server di origine – George2

+0

e il ripristino completo sul server di destinazione? – George2

+0

quando si utilizza attach/detach, ci saranno dei registri delle transazioni sia sul server del database di origine che sul server del database di destinazione? – George2

8

Il backup e il ripristino hanno molto più senso, anche se è possibile scegliere alcuni minuti extra da un'opzione di scollegamento. È necessario portare il database originale offline (disconnettere tutti) prima di una disconnessione, quindi il db non è disponibile fino al nuovo collegamento. Devi anche tenere traccia di tutti i file, mentre con un backup tutti i file sono raggruppati. E con le versioni più recenti di SQL Server i backup sono compressi.

E solo per correggere qualcosa: i backup di DB e i backup differenziali non tronchiano il log e non interrompono la catena di log.

Inoltre, la funzionalità COPY_ONLY è rilevante solo per la base differenziale, non per il LOG. Tutti i backup dei registri possono essere applicati in sequenza da qualsiasi backup, assumendo che non vi sia alcuna interruzione nella catena di log. C'è una leggera differenza con il punto di archiviazione, ma non riesco a vedere dove importa.

Problemi correlati