Preparar um banco de dados espelho para espelhamento (SQL Server)
Aplica-se a: SQL Server
Antes de uma sessão de espelhamento do banco de dados poder iniciar, o proprietário do banco de dados ou administrador de sistema devem ter certeza de que o banco de dados espelho foi criado e está pronto para espelhar. A criação de um novo banco de dados espelho requer minimamente um backup cheio do banco de dados principal e um backup de log subsequente e a restauração de ambos sobre a instância do servidor espelho, usando WITH NORECOVERY.
Este tópico descreve como preparar um banco de dados espelho no SQL Server usando o SQL Server Management Studio ou o Transact-SQL.
Antes de começar:
Para preparar um banco de dados espelho existente para reiniciar o espelhamento
Acompanhamento: Após preparar um banco de dados espelho
Antes de começar
Requisitos
As instâncias de servidor principal e espelho devem ser executadas na mesma versão do SQL Server. Embora o servidor espelho possa ter uma versão posterior do SQL Server, essa configuração é recomendável somente durante um processo de atualização cuidadosamente planejado. Nessa configuração, você corre o risco de um failover automático, no qual a movimentação de dados é suspensa automaticamente porque os dados não podem migrar para uma versão anterior do SQL Server. Para obter mais informações, veja Atualizando instâncias espelhadas.
As instâncias de servidor principal e espelho devem ser executadas na mesma edição do SQL Server. Para obter informações sobre o suporte para o espelhamento de banco de dados no SQL Server, veja Edições e recursos com suporte do SQL Server 2022.
O banco de dados deve usar o modelo de recuperação completa.
Para obter mais informações, confira Exibir ou alterar o modelo de recuperação de um banco de dados (SQL Server) ou sys.databases (Transact-SQL) e ALTER DATABASE (Transact-SQL).
O nome do banco de dados espelho deve ser igual ao nome do banco de dados principal.
O banco de dados espelho deve estar no estado de RESTORING para espelhar o trabalho. Ao preparar um banco de dados espelho, é necessário usar RESTORE WITH NORECOVERY para todas as operações de restauração. Minimamente, você precisará restaurar o backup completo WITH NORECOVERY do banco de dados principal, seguido por todos os backups de log subsequentes.
O sistema onde você planeja criar o banco de dados espelho deve ter uma unidade de disco com espaço suficiente para conter o banco de dados espelho.
Limitações e Restrições
Não é possível espelhar os bancos de dados do sistema mestre, msdb, tempou modelo .
Não é possível espelhar um banco de dados que pertence a um grupo de disponibilidade AlwaysOn.
Recomendações
Use um backup de banco de dados completo muito recente ou diferencial recente do banco de dados principal.
Se um trabalho de backup de log estiver agendado para ser executado com muita frequência no banco de dados principal, talvez você precise desabilitar o trabalho de backup até o início do espelhamento.
Se possível, o caminho (inclusive a letra da unidade) do banco de dados espelho deve ser idêntico ao caminho do banco de dados principal.
Se os caminhos dos arquivos precisarem ser diferentes, por exemplo, se o banco de dados principal estiver na unidade 'F:', mas o sistema espelho não tiver uma unidade F:, será necessário incluir a opção MOVE na instrução RESTORE.
Importante
Ao adicionar um arquivo durante uma sessão de espelhamento sem afetá-la, é necessário que o caminho do arquivo exista nos dois servidores. Portanto, se você mover os arquivos de banco de dados quando estiver criando o banco de dados espelho, uma operação adicionar arquivo posterior pode não funcionar no banco de dados espelho e causar a suspensão do espelhamento. Para obter informações sobre como lidar com uma falha na operação de criar arquivo, confira Solução de problemas de configuração de espelhamento de banco de dados (SQL Server).
Se o banco de dados principal tiver catálogos de texto completo, é recomendável conferir Espelhamento de banco de dados e catálogos de texto completo (SQL Server).
Em um banco de dados de produção, sempre faça backup em um dispositivo separado.
Segurança
TRUSTWORTHY é definido como OFF em um backup de banco de dados. Portanto, em um novo banco de dados espelho, TRUSTWORTHY será sempre OFF. Se o banco de dados tiver que ser confiável depois de um failover, serão necessárias etapas de instalação adicionais. Para obter mais informações, confira Configurar um banco de dados espelho para usar a propriedade confiável (Transact-SQL).
Para obter informações sobre como habilitar a decodificação automática da chave mestre de um banco de dados espelho, veja Configurar um banco de dados espelho criptografado.
Permissões
Proprietário de banco de dados ou administrador do sistema.
Para preparar um banco de dados espelho existente para reiniciar o espelhamento
Se o espelhamento foi removido e o banco de dados espelho ainda está no estado de RECOVERING, você pode reinicializar o espelhamento.
Faça pelo menos um backup de log no banco de dados principal. Para obter mais informações, confira Fazer backup de um log de transações (SQL Server).
No banco de dados espelho, use RESTORE WITH NORECOVERY para restaurar todos os backups de logs efetuados no banco de dados principal desde que o espelhamento foi removido. Para obter mais informações, confira Restaurar um backup de log de transações (SQL Server).
Para preparar um novo banco de dados espelho
Para preparar um banco de dados espelho
Observação
Para obter um exemplo Transact-SQL desse procedimento, confira Exemplo (Transact-SQL), mais adiante nesta seção.
Conecte-se à instância de servidor principal.
Crie um backup de banco de dados completo ou diferencial do banco de dados principal.
Geralmente, você precisa efetuar pelo menos um backup de log no banco de dados principal. Porém, um backup de log pode ser desnecessário, caso o banco de dados tenha acabado de ser criado e nenhum backup realizado ou se o modelo de recuperação foi alterado de SIMPLE para FULL.
A menos que os backups estejam em uma unidade de rede que esteja acessível de ambos os sistemas, copie o banco de dados e os backups de log para o sistema que hospedará a instância de servidor espelho.
Conecte-se à instância de servidor espelho.
Usando RESTORE WITH NORECOVERY, crie o banco de dados espelho restaurando o backup completo do banco de dados e, opcionalmente, o backup de banco de dados diferencial mais recente, na instância do servidor espelho.
Observação
Se restaurar o grupo de arquivos de banco de dados pelo grupo de arquivos, restaure todo o banco de dados.
Usando RESTORE WITH NORECOVERY, aplique quaisquer backups de log pendentes ou backups ao banco de dados espelho.
Exemplo (Transact-SQL)
Antes de poder iniciar uma sessão de espelhamento de banco de dados, é preciso criar o banco de dados espelho. Isso deve ser feito antes de iniciar a sessão de espelhamento.
Esse exemplo usa o banco de dados de exemplo do AdventureWorks2022
que, por padrão, usa o modelo de recuperação simples.
Para usar espelhamento de banco de dados com o banco de dados
AdventureWorks2022
, modifique-o para usar o modelo de recuperação completa:USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO
Depois de modificar o modelo de recuperação do banco de dados de SIMPLE para FULL, crie um backup completo, que pode ser usado para criar o banco de dados do espelho. Como o modelo de recuperação acabou de ser alterado, a opção WITH FORMAT estará especificada para criar um novo conjunto de mídias. Isso é útil para separar os backups sob o modelo de recuperação completa de qualquer backup anterior feito sob o modelo de recuperação simples. Com a finalidade deste exemplo, o arquivo de backup (
C:\AdventureWorks.bak
) será criado na mesma unidade como o banco de dados.Observação
Em um banco de dados de produção, você deve sempre fazer backup em um dispositivo separado.
Na instância de servidor principal (em
PARTNERHOST1
), crie um backup completo do banco de dados principal conforme segue:BACKUP DATABASE AdventureWorks TO DISK = 'C:\AdventureWorks.bak' WITH FORMAT GO
Copiar o backup completo para servidor espelho.
Usando RESTORE WITH NORECOVERY, restaure o backup completo na instância do servidor espelho. O comando para restaurar depende que os caminhos dos bancos de dados principal e espelho sejam idênticos.
Se os caminhos forem idênticos:
Na instância de servidor espelho (em
PARTNERHOST5
), restaure o backup completo conforme a seguir:RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH NORECOVERY GO
Se os caminhos forem diferentes:
Se o caminho do banco de dados espelho for diferente do caminho do banco de dados principal (por exemplo, as letras da unidade são diferentes), crie o banco de dados espelho requer que a operação de restauração inclua uma cláusula MOVE.
Importante
Se os nomes do caminho dos bancos de dados espelho e principal forem diferentes, não será possível adicionar um arquivo. Isso acontece porque, ao receber o log para a operação do arquivo adicionado, a instância do servidor espelho tenta colocar o novo arquivo no local usado pelo banco de dados principal.
Por exemplo, o seguinte comando restaura um backup de um banco de dados principal que está em C:\Arquivos de Programas\Microsoft SQL Server\MSSQL.n\MSSQL\Data\ para um local diferente, D:\Arquivos de Programas\Microsoft SQL Server\MSSQL.n\MSSQL\Dat
a\
, em que o banco de dados espelho reside.RESTORE DATABASE AdventureWorks FROM DISK='C:\AdventureWorks.bak' WITH NORECOVERY, MOVE 'AdventureWorks_Data' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', MOVE 'AdventureWorks_Log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf'; GO
Depois de criar o backup completo, deve-se criar um backup de log no banco de dados principal. Por exemplo, a seguinte instrução Transact-SQL faz o backup de log ao mesmo arquivo usado pelo backup completo anterior:
BACKUP LOG AdventureWorks TO DISK = 'C:\AdventureWorks.bak' GO
Antes de poder iniciar o espelhamento, é necessário aplicar o backup de log exigido (e qualquer backup de log subsequente).
Por exemplo, a seguinte instrução Transact-SQL restaura o primeiro log do
C:\AdventureWorks.bak
:RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=1, NORECOVERY GO
Se qualquer backup de log adicional ocorrer antes de começar o espelhamento, deve-se também restaurar todos os backups de log, em sequência, ao servidor espelho usando WITH NORECOVERY.
Por exemplo, a instrução seguinte Transact-SQL restaura dois logs adicionais de
C:\AdventureWorks.bak
:RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=2, NORECOVERY GO RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=3, NORECOVERY GO
Para obter um exemplo completo de configuração de espelhamento de banco de dados, exibição da configuração de segurança, preparo do banco de dados espelho, configuração de parceiros e adição de uma testemunha, confira Configurando o espelhamento de banco de dados (SQL Server).
Acompanhamento: depois de preparar um banco de dados espelho
Se algum backup de log adicional tiver sido realizado desde sua operação RESTORE LOG mais recente, você deverá aplicar manualmente todos os backups de log adicionais, usando RESTORE WITH NORECOVERY.
Inicie a sessão de espelhamento. Para obter mais informações, confira Estabelecer uma sessão de espelhamento de banco de dados usando a Autenticação do Windows (SQL Server Management Studio) ou o Estabelecer uma sessão de espelhamento de banco de dados com a Autenticação do Windows (Transact-SQL).
Se você desabilitou o trabalho de backup no banco de dados principal, reabilite o trabalho.
Se o banco de dados precisar estar confiável após um failover, serão necessárias etapas adicionais de instalação após o início do espelhamento. Para obter mais informações, confira Configurar um banco de dados espelho para usar a propriedade confiável (Transact-SQL).
Related Tasks
Consulte Também
Espelhamento de banco de dados (SQL Server)
Segurança de transporte para espelhamento de banco de dados e Grupos de Disponibilidade AlwaysOn (SQL Server)
Configurando o espelhamento de banco de dados (SQL Server)
Fazer backup e restaurar índices e catálogos de texto completo
Espelhamento de banco de dados e catálogos de texto completo (SQL Server)
Espelhamento e replicação de banco de dados (SQL Server)
BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
Argumentos de RESTORE (Transact-SQL)