Perché TO DISK = N’NUL’
?
Non capisco perché stai usando TO DISK = N’NUL’
:
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
In tal caso, il backup viene salvato in NUL
, (cioè = nel nulla / niente) e non può essere utilizzato perché il suo file non esiste.
Sebbene NUL
possa essere utilizzato anche come destinazione per i backup di LOG, non dovrebbe essere utilizzato neanche, in particolare sui server Prod perché i log andranno persi e la catena di backup verrà interrotta. (~ simile a a SHRINKFILE
)
LOG Backup
Prima di aggiungere un DB al gruppo, è necessario prepararlo. Quando si desidera preparare un DB secondario, è necessario eseguire e ripristinare almeno 1 backup del registro delle transazioni. Il mirror lo utilizza per capire quali transazioni sono già state sincronizzate sul DB secondario e quali transazioni non sono ancora sincronizzate con il DB primario.
Pertanto è necessario eseguire il backup dei registri delle transazioni sul DB primario:
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
L' COPY_ONLY
opzione deve essere utilizzata. Si assicura che i log non vengano troncati al termine del backup del LOG.
Catena di backup del database primario
Tuttavia, non è possibile ripristinare un backup del log da solo, ovvero senza una catena di backup (vedere anche la risposta Kin). Ciò significa che il backup del registro delle transazioni deve essere eseguito dopo che è stato eseguito un backup COMPLETO del database (+ un differenziale opzionale se necessario).
Poiché l' COPY_ONLY
opzione non interrompe la catena di backup, non crea nemmeno una catena di backup. L' COPY_ONLY
opzione non può essere utilizzata per il backup del database.
Backup in ordine:
- Backup COMPLETO del database senza l'
COPY_ONLY
opzione
- Backup differenziale opzionale
- 1 LOG Backup con
COPY_ONLY
opzione
- un altro (o più) backup LOG, se necessario ...
Ripristina il DB secondario
Quindi il backup del database deve essere ripristinato (+ differenziale) sul secondario.
Deve essere ripristinato con l' NORECOVERY
opzione perché si desidera ripristinare anche i backup LOG una volta ripristinato il backup COMPLETO.
Infine, ripristinerai LOG Backup. È comunque necessario utilizzare l' NORECOVERY
opzione perché il mirror continuerà a ripristinare le transazioni una volta in atto.
- Ripristina il backup COMPLETO con l'
NORECOVERY
opzione
- Ripristina il backup DIFF con l'
NORECOVERY
opzione
- Ripristina tutti i backup del LOG in ordine con l'
NORECOVERY
opzione
Mettiamo tutto insieme (adattalo al tuo ambiente)
Sul server primario eseguire:
USE master
Go
BACKUP DATABASE [test0916aj8CJ] TO DISK = N'....bak'
WITH FORMAT, INIT, NAME = N'test0916aj8CJ-Full Database Backup', STATS = 10
GO
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
GO
Sul server secondario eseguire:
USE master
Go
RESTORE DATABASE [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE LOG [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
È quindi possibile procedere con l'aggiunta del nuovo DB secondario al gruppo di disponibilità ...
Azioni opzionali
- È meglio impostare l'opzione DISK su una cartella condivisa disponibile sia dal server primario che secondario.
- È anche meglio archiviare i file DB su disco e posizione simili sia sul server primario che su quello secondario.