Visão geral da restauração e recuperação (SQL Server)
Aplica-se: SQL Server
Este artigo apresenta uma visão geral do processo de restauração e recuperação de banco de dados para SQL Server.
Visão geral
Para recuperar um banco de dados SQL Server de uma falha, um administrador de banco de dados precisa restaurar um conjunto de backups do SQL Server em uma sequência de restauração logicamente correta e significativa. O processo de restauração e recuperação do SQL Server dá suporte à restauração de dados a partir de backups de um banco de dados inteiro, de um arquivo de dados ou de uma página de dados, da seguinte maneira:
O banco de dados (uma restauração completa do banco de dados)
Todo o banco de dados é restaurado e recuperado, e o banco de dados fica offline durante as operações de restauração e recuperação.
O arquivo de dados (uma restauração de arquivo)
Um arquivo de dados ou um conjunto de arquivos é restaurado e recuperado. Durante uma operação de restauração de arquivo, os grupos de arquivos que contêm os arquivos ficam automaticamente offline. Qualquer tentativa de acessar um grupo de arquivos offline gera um erro.
A página de dados (uma restauração de página)
Você pode restaurar páginas específicas por meio do modelo de recuperação completa ou do modelo de recuperação bulk-logged. As restaurações de página podem ser executadas em qualquer banco de dados, seja qual for o número de grupos de arquivos.
O backup e a restauração do SQL Server funcionam em todos os sistemas operacionais com suporte. Para obter informações sobre os sistemas operacionais com suporte, confira Requisitos de hardware e software para instalar o SQL Server. Para obter informações sobre suporte para backups de versões anteriores do SQL Server, veja a seção "Suporte de compatibilidade" de RESTORE.
Cenários de restauração
Um cenário de restauração no SQL Server é o processo de restauração de dados de um ou mais backups seguido da recuperação do banco de dados. Os cenários de restauração com suporte dependem do modelo de recuperação do banco de dados e da versão do SQL Server.
A tabela abaixo descreve os possíveis cenários de restauração que têm suporte para diversos modelos de recuperação.
cenário de restauração | Modelo de recuperação simples | Modelos de recuperação completa e com log de operações em massa |
---|---|---|
restauração completa do banco de dados | Esta é a estratégia básica de restauração. Uma restauração completa do banco de dados pode envolver simplesmente a restauração e recuperação do backup completo do banco de dados. Alternativamente, uma restauração completa do banco de dados pode envolver a restauração do banco de dados completo seguida pela restauração e recuperação de um backup diferencial. Para obter mais informações, veja Restaurações completas de banco de dados (modelo de recuperação simples). |
Esta é a estratégia básica de restauração. Uma restauração completa do banco de dados envolve a restauração de um backup completo do banco e, opcionalmente, de um backup diferencial (se houver), seguida da restauração de todos os backups de logs subsequentes (em sequência). A restauração completa do banco de dados termina com a recuperação do último backup de log e também com sua restauração (RESTORE WITH RECOVERY). Para obter mais informações, veja Restaurações completas de banco de dados (modelo de recuperação completa) |
Restauração de arquivo 1 | Restaura um ou mais arquivos somente leitura danificados, sem restaurar todo o banco de dados. A restauração de arquivo só estará disponível se o banco de dados tiver pelo menos um grupo de arquivos somente leitura. | Restaura um ou mais arquivos, sem restaurar todo o banco de dados. A restauração de arquivo pode ser executada enquanto o banco de dados estiver offline ou, em algumas edições do SQL Server, enquanto o banco de dados permanece online. Durante uma restauração de arquivo, os grupos de arquivos que contêm os arquivos que estão sendo restaurados sempre estão offline. |
Restauração de página | Não aplicável | Restaura uma ou mais páginas danificadas. A restauração de páginas pode ser executada enquanto o banco de dados estiver offline ou, em algumas edições do SQL Server, enquanto o banco de dados permanece online. Durante uma restauração de página, as páginas que estão sendo restauradas sempre estão offline. Uma cadeia ininterrupta de backups de log deve estar disponível, inclusive o arquivo de log atual, e todos eles devem ser aplicados para atualizar a página com o arquivo de log atual. Para obter mais informações, confira Restaurar páginas (SQL Server). |
Restauração por etapas 1 | Restaura e recupera o banco de dados em fases no nível do grupo de arquivos, iniciando com o grupo de arquivos primário e todos os grupos de arquivos de gravação/leitura secundários. | Restaura e recupera o banco de dados em fases no nível do grupo de arquivos, iniciando com o grupo de arquivos primário. Para obter mais informações, confira Restaurações por etapas (SQL Server) |
1 Apenas há suporte para a restauração online na edição Enterprise.
Etapas de restauração de um banco de dados
Para executar uma restauração de arquivo, o Mecanismo de Banco de Dados executa duas etapas:
Criação de todos os arquivos de banco dados ausentes.
Cópia dos dados dos dispositivos de backup para os arquivos do banco de dados.
Para executar uma restauração de banco de dados, o Mecanismo de Banco de Dados executa três etapas:
Cria os arquivos de log de transações e do banco de dados, caso ainda não existam.
Cópia de todos os dados, log e páginas de índice da mídia de backup de um banco de dados para os arquivos do banco de dados.
Aplica o log de transações no que é conhecido como processo de recuperação.
Independentemente de como os dados são restaurados, antes que um banco de dados possa ser recuperado, o Mecanismo de Banco de Dados do SQL Server garante que todo o banco de dados seja logicamente consistente. Por exemplo, se você restaurar um arquivo, não poderá recuperá-lo e colocá-lo online enquanto ele não for rolado para frente o suficiente para estar consistente com o banco de dados.
Vantagens de uma restauração de arquivo ou página
A restauração e recuperação de arquivos ou páginas, ao invés de todo o banco de dados, oferece as seguintes vantagens:
Restaurar menos dados diminui o tempo necessário para copiar e recuperar o banco de dados.
No SQL Server, a restauração de arquivos ou páginas pode permitir que outros dados no banco de dados permaneçam online durante a operação de restauração.
Recuperação e o log de transações
Para a maioria dos cenários de restauração, é necessário aplicar um backup de log de transações e permitir que o Mecanismo de Banco de Dados do SQL Server execute o processo de recuperação para que o banco de dados fique online. A recuperação é o processo usado pelo SQL Server para cada banco de dados ser iniciado em um estado transacional consistente, ou limpo.
Em caso de failover ou outro desligamento não limpo, os bancos de dados poderão ser deixados em um estado em que algumas modificações nunca foram gravadas do cache do buffer para os arquivos de dados, e poderá haver algumas modificações de transações incompletas nos arquivos de dados. Quando uma instância do SQL Server é iniciada, ela executa uma recuperação de cada banco de dados, que consiste em três fases, com base no último ponto de verificação do banco de dados:
A Fase 1 é a Fase de Análise que analisa o log de transações para determinar qual é o último ponto de verificação e cria a Tabela de Páginas Sujas (DPT) e a Tabela de Transações Ativas (ATT). A DPT contém registros de páginas que estavam sujas no momento em que o banco de dados foi desligado. A ATT contém registros de transações que estavam ativas no momento em que o banco de dados não foi desligado corretamente.
A Fase 2 é a Fase Refazer, que encaminha todas as modificações registradas no log que podem não ter sido gravadas nos arquivos de dados no momento em que o banco de dados foi desligado. O número de sequência de log mínimo (minLSN) necessário para uma recuperação bem-sucedida em todo o banco de dados é encontrado na DPT e marca o início das operações refazer necessárias em todas as páginas sujas. Nessa fase, o Mecanismo de Banco de Dados do SQL Server grava em disco todas as páginas sujas que pertencem a transações confirmadas.
A Fase 3 é a Fase Desfazer, que reverte transações incompletas encontradas na ATT para garantir que a integridade do banco de dados seja preservada. Depois da reversão, o banco de dados fica online e mais nenhum backup de log de transações pode ser aplicado ao banco de dados.
As informações sobre o andamento de cada estágio de recuperação do banco de dados são registradas no log de erros do SQL Server. O progresso da recuperação do banco de dados também pode ser acompanhado usando eventos estendidos. Saiba mais na postagem do blog Novos eventos estendidos para o progresso da recuperação do banco de dados.
Observação
Em um cenário de restauração por etapas, se o status de um grupo de arquivos for somente leitura desde antes de o backup de arquivo ser criado, aplicar backups de log ao grupo de arquivos será desnecessário e será ignorado pela restauração de arquivo.
Observação
Para maximizar a disponibilidade dos bancos de dados em um ambiente corporativo depois que o serviço do SQL Server é iniciado, como após um failover de uma Instância de Cluster de Failover Always On ou reinicialização in-loco, o SQL Server Enterprise Edition pode colocar um banco de dados online após a Fase Refazer, enquanto a Fase Desfazer ainda está em execução. Isso é conhecido como Recuperação Rápida. No entanto, a Recuperação Rápida não está disponível quando o banco de dados faz a transição para um estado online, mas o serviço do SQL Server não foi reiniciado. Por exemplo, a execução de ALTER DATABASE AdventureWorks SET ONLINE;
não permitirá que o banco de dados esteja no estado de leitura/gravação até que todas as três fases de recuperação tenham sido concluídas.
Modelos de recuperação e operações de restauração com suporte
As operações de restauração disponíveis para um banco de dados dependem de seu modelo de recuperação. A tabela abaixo resume se e qual extensão cada um dos modelos de recuperação suporta um determinado cenário de restauração.
Operação de restauração | Modelo de recuperação completa | Modelo de recuperação bulk-logged | Modelo de recuperação simples |
---|---|---|---|
Recuperação de dados | Recuperação completa (se o log estiver disponível). | Exposição a alguma perda de dados. | Quaisquer dados desde o último backup completo ou diferencial serão perdidos. |
Restauração em um momento determinado | Qualquer período coberto pelos backups de log. | Não permitido se o backup de log contiver quaisquer alterações com log de alteração em massa. | Não há suporte. |
Restauração de arquivo 1 | Suporte completo. | Às vezes. 2 | Disponível só para arquivos secundários somente leitura. |
Restauração de página 1 | Suporte completo. | Às vezes. 2 | Nenhum. |
Restauração por etapas (nível de grupo de arquivos) 1 | Suporte completo. | Às vezes. 2 | Disponível só para arquivos secundários somente leitura. |
1 Disponível apenas na edição Enterprise do SQL Server
2 Para conhecer as condições exigidas, consulte Restrições de restauração no modelo de recuperação simples, mais adiante neste artigo.
Importante
Independentemente do modelo de recuperação de um banco de dados, um backup do SQL Server não pode ser restaurado para uma versão do Mecanismo de Banco de Dados do SQL Server que seja mais antiga que a versão que criou o backup.
Cenários de restauração no modelo de recuperação simples
O modelo de recuperação simples impõe as seguintes restrições em operações de restauração:
Restauração de arquivo e restauração por etapas estão disponíveis apenas para grupos de arquivos secundários somente leitura. Para obter informações sobre esses cenários de restauração, veja Restaurações de arquivos (modelo de recuperação simples) e Restaurações por etapas (SQL Server).
A restauração de página não é permitida.
A restauração pontual não é permitida.
Se quaisquer dessas restrições forem impróprias para suas necessidades de recuperação, recomendamos que você considere o uso do modelo de recuperação completa. Para obter mais informações, veja Visão geral do backup (SQL Server).
Importante
Independentemente do modelo de recuperação de um banco de dados, um backup do SQL Server não pode ser restaurado por uma versão do SQL Server que seja mais antiga do que a versão que criou o backup.
Restauração no modelo de recuperação bulk-logged
Esta seção aborda as considerações de restauração que são específicas do modelo de recuperação bulk-logged, que deve ser usado exclusivamente como complemento para o modelo de recuperação completa.
Observação
Para ver uma introdução ao modelo de recuperação bulk-logged, veja O log de transações (SQL Server).
Geralmente, o modelo de recuperação bulk-logged é semelhante ao modelo de recuperação completa e as informações descritas para o modelo de recuperação completa também se aplicam a ambos. Porém, a recuperação pontual e a restauração online são afetadas pelo modelo de recuperação bulk-logged.
Restrições para a recuperação pontual
Se um backup de log feito no modelo de recuperação bulk-logged contiver alterações registradas em massa, a recuperação pontual não será permitida. Tentar executar a recuperação pontual em um backup de log que contenha alterações em massa leva à falha na operação de restauração.
Restrições para a restauração online
Uma sequência de restauração online funciona apenas se as seguintes condições forem atendidas:
Todos os backups de log exigidos devem ter sido feitos antes do início da sequência de restauração.
Os backups de alterações em massa devem ser feitos antes do início da sequência de restauração online.
Se houver alterações em massa no banco de dados, todos os arquivos deverão estar online ou extintos. (Isso significa que já não faz parte do banco de dados.)
Se essas condições não forem atendidas, haverá falha na sequência de restaurações online.
Observação
Recomenda-se passar para o modelo de recuperação completa antes de iniciar uma restauração online. Para obter mais informações, veja Modelos de recuperação (SQL Server).
Para obter informações sobre como executar uma restauração online, veja Restauração online (SQL Server).
Orientador de recuperação de banco de dados (SQL Server Management Studio)
O orientador de recuperação de banco de dados facilita a criação de planos de restauração que implementam sequências de restauração corretas. Muitos problemas conhecidos e aperfeiçoamentos de restauração de banco de dados solicitados pelos clientes foram resolvidos. Estes são os principais aperfeiçoamentos incorporados pelo orientador de recuperação de banco de dados:
Algoritmo do plano de restauração: o algoritmo usado para criar planos de restauração melhorou significativamente, particularmente em cenários de restauração complexos. Muitos casos extremos, inclusive cenários de fork em restaurações pontuais, são tratados de forma mais eficiente do que nas versões anteriores do SQL Server.
Restaurações pontuais: o Assistente de Recuperação de Banco de Dados simplifica consideravelmente a restauração de um banco de dados em um determinado momento. Uma linha de tempo de backup visual aprimora significativamente o suporte a restaurações pontuais. Essa linha de tempo visual permite que você identifique um momento viável como ponto de recuperação de destino para a restauração de um banco de dados. A linha do tempo facilita a transposição de um caminho de recuperação bifurcado (um caminho que abrange bifurcações de recuperação). Um plano de restauração pontual inclui automaticamente os backups relevantes para a restauração do momento desejado (data e hora). Para obter mais informações, confira Restaurar um banco de dados do SQL Server em um ponto específico (Modelo de recuperação completa).
Para obter mais informações sobre o Assistente de Recuperação de Banco de Dados, consulte os seguintes blogs sobre capacidade de gerenciamento do SQL Server:
Recuperação de banco de dados acelerada
A recuperação acelerada de banco de dados está disponível a partir do SQL Server 2019 (15.x) e no Banco de Dados SQL do Azure. A recuperação acelerada de banco de dados melhora significativamente a disponibilidade do banco de dados, especialmente na presença de transações de execução prolongada, remodelando o processo de recuperação do Mecanismo de Banco de Dados do SQL Server. Um banco de dados para o qual a recuperação acelerada do banco de dados foi habilitada conclui o processo de recuperação significativamente mais rápido após um failover ou outro desligamento não limpo. Quando habilitada, a recuperação acelerada do banco de dados também conclui a reversão de transações canceladas de longa execução muito mais rapidamente.
Para habilitar a recuperação acelerada do banco de dados por banco de dados no SQL Server 2019 (15.x), use a seguinte sintaxe:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
Observação
A recuperação acelerada do banco de dados é habilitada por padrão no Banco de Dados SQL do Azure.