Por que TO DISK = N’NUL’
?
Não entendo por que você está usando TO DISK = N’NUL’
:
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
Se você fizer isso, o backup será salvo em NUL
(ou seja, = para lugar nenhum / nada) e não poderá ser usado porque o arquivo não existe.
Embora NUL
também possa ser usado como destino para backups de LOG, também não deve ser usado, especialmente em servidores Prod, pois os LOGs serão perdidos e a cadeia de backup será interrompida. (~ semelhante a SHRINKFILE
)
Backup do LOG
Antes de adicionar um banco de dados ao grupo, você deve prepará-lo. Quando você deseja preparar um banco de dados secundário, pelo menos 1 backup do log de transações deve ser executado e restaurado. O espelho o utiliza para descobrir quais transações já foram sincronizadas no banco de dados secundário e quais ainda não estão sincronizadas com o banco de dados primário.
Portanto, você deve fazer backup dos logs de transação no banco de dados primário:
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
A COPY_ONLY
opção deve ser usada. Ele garante que os logs não sejam truncados no final do backup do LOG.
Cadeia de backup do banco de dados primário
No entanto, você não pode restaurar um backup de log sozinho, ou seja, sem uma cadeia de backup (consulte a resposta do Kin também). Isso significa que o backup do log de transações deve ser realizado após a realização de um backup completo do banco de dados (+ um diferencial opcional, se necessário).
Como a COPY_ONLY
opção não quebra a cadeia de backup, ela também não cria uma cadeia de backup. A COPY_ONLY
opção não pode ser usada para o backup do banco de dados.
Backups em ordem:
- Backup completo do banco de dados sem a
COPY_ONLY
opção
- Backup diferencial opcional
- 1 LOG de backup com
COPY_ONLY
opção
- outro (ou mais) backup de LOG, se necessário ...
Restaurar o banco de dados secundário
Em seguida, o backup do banco de dados deve ser restaurado (+ diferencial) no secundário.
Ele deve ser restaurado com a NORECOVERY
opção, porque você também deseja restaurar os backups de LOG depois que o backup COMPLETO for restaurado.
Finalmente, você restaurará o backup do LOG. Você ainda precisa usar a NORECOVERY
opção porque o espelho continuará restaurando as transações uma vez no local.
- Restaure o backup COMPLETO com a
NORECOVERY
opção
- Restaure o backup DIFF com a
NORECOVERY
opção
- Restaure todos os backups do LOG em ordem com a
NORECOVERY
opção
Vamos juntar tudo (adaptá-lo ao seu ambiente)
No servidor principal, execute:
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
No servidor secundário, execute:
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
Você pode então continuar adicionando o novo banco de dados secundário ao grupo de disponibilidade ...
Ações opcionais
- É melhor definir a opção DISK como uma pasta compartilhada disponível nos servidores Primário e Secundário.
- Também é melhor armazenar arquivos de banco de dados em um disco e local semelhantes nos servidores primário e secundário.