¿Por qué TO DISK = N’NUL’
?
No entiendo por qué estás usando TO DISK = N’NUL’
:
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
Si hace eso, la copia de seguridad se guarda en NUL
(es decir, en ninguna parte / nada) y no se puede usar porque su archivo no existe.
Si bien NUL
también se puede usar como destino para las copias de seguridad de LOG, tampoco se debe usar, especialmente en los servidores Prod porque los registros se perderán y la cadena de copias de seguridad se romperá. (~ similar a a SHRINKFILE
)
LOG Backup
Antes de agregar una base de datos al grupo, debe prepararla. Cuando desee preparar una base de datos secundaria, se debe tomar y restaurar al menos 1 copia de seguridad del registro de transacciones. El espejo lo utiliza para determinar qué transacciones ya se han sincronizado en la base de datos secundaria y qué transacciones aún no están sincronizadas con la base de datos primaria.
Por lo tanto, debe hacer una copia de seguridad de los registros de transacciones en la base de datos primaria:
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
La COPY_ONLY
opción debe ser utilizada. Se asegura de que los registros no estén truncados al final de la copia de seguridad del REGISTRO.
Cadena de respaldo de base de datos primaria
Sin embargo, no puede restaurar una copia de seguridad de registro solo, es decir, sin una cadena de copia de seguridad (consulte la respuesta de Kin también). Esto significa que la copia de seguridad del registro de transacciones debe tomarse después de una copia de seguridad de la base de datos COMPLETA (+ un diferencial opcional si es necesario).
Dado que la COPY_ONLY
opción no rompe la cadena de respaldo, tampoco crea una cadena de respaldo. La COPY_ONLY
opción no se puede utilizar para la Copia de seguridad de la base de datos.
Copias de seguridad en orden:
- Copia de seguridad completa de la base de datos sin la
COPY_ONLY
opción
- Copia de seguridad diferencial opcional
- 1 LOG Backup con
COPY_ONLY
opción
- otra (o más) LOG de respaldo si es necesario ...
Restaurar la base de datos secundaria
Entonces la copia de seguridad de la base de datos debe restaurarse (+ diferencial) en el secundario.
Debe restaurarse con la NORECOVERY
opción porque también desea restaurar las copias de seguridad del REGISTRO una vez que se haya restaurado la copia de seguridad COMPLETA.
Finalmente, restaurará la copia de seguridad de LOG. Aún necesita usar la NORECOVERY
opción porque el espejo seguirá restaurando las transacciones una vez en su lugar.
- Restaurar la copia de seguridad COMPLETA con la
NORECOVERY
opción
- Restaurar la copia de seguridad DIFF con la
NORECOVERY
opción
- Restaure todas las copias de seguridad de LOG en orden con la
NORECOVERY
opción
Vamos a poner todo junto (adaptarlo a su entorno)
En el servidor primario, ejecute:
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
En el servidor secundario, ejecute:
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
Luego puede continuar agregando el nuevo DB secundario al grupo de disponibilidad ...
Acciones opcionales
- Es mejor configurar la opción DISCO en una carpeta compartida que esté disponible tanto en el servidor primario como en el secundario.
- También es mejor almacenar archivos DB en discos y ubicaciones similares en los servidores primario y secundario.