Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Ao atualizar uma instância do SQL Server que hospeda um AG (Grupo de Disponibilidade) do AlwaysOn para uma nova versão do SQL Server, um novo service pack ou uma atualização cumulativa do SQL Server ou ao instalar um novo service pack ou uma atualização cumulativa do Windows, você poderá reduzir o tempo de inatividade para a réplica primária para um único failover manual executando uma atualização sem interrupção (ou dois failovers manuais em caso de failback para a primária original).
Durante o processo de atualização, uma réplica secundária não estará disponível para failover ou para operações somente leitura e, após a atualização, pode levar algum tempo para que a réplica secundária acompanhe o nó da réplica primária, dependendo do volume de atividade no nó de réplica primária (portanto, espere um alto tráfego de rede).
Além disso, lembre-se de que depois do failover inicial para uma réplica secundária executando uma versão mais recente do SQL Server, os bancos de dados nesse AG passarão por um processo de atualização para colocá-los na versão mais recente. Durante esse tempo, não haverá nenhuma réplica legível para nenhum desses bancos de dados. O tempo de inatividade após o failover inicial depende do número de bancos de dados no AG. Se você planeja realizar o failback no primário original, essa etapa não será repetida ao realizar o failback.
Observação
Este artigo limita a discussão à atualização do próprio SQL Server. Ele não abrange a atualização do sistema operacional que contém o WSFC (Cluster de Failover do Windows Server). Não há suporte para a atualização do sistema operacional Windows que hospeda o cluster de failover para sistemas operacionais antes do Windows Server 2012 R2. Para atualizar um nó de cluster em execução no Windows Server 2012 R2, confira o artigo Atualização sem interrupção do Sistema Operacional do Cluster.
Pré-requisitos
Antes de começar, examine as seguintes informações importantes:
Versão com suporte e atualizações da edição: verifique se você pode atualizar para a versão mais recente do SQL Server com a sua versão do sistema operacional Windows e a versão do SQL Server. Por exemplo, se você atualizar diretamente de uma instância do SQL Server 2005, o nível de compatibilidade do banco de dados será atualizado.
Escolha um método de atualização do mecanismo de banco de dados: para atualizar na ordem correta, selecione o método e as etapas de atualização apropriados com base em sua análise de atualizações de versão e de edição com suporte e também com base em outros componentes instalados em seu ambiente.
Planeje e teste o plano de atualização do mecanismo de banco de dados: examine as notas de versão e os problemas de atualização conhecidos, a lista de verificação de pré-graduação e desenvolva e teste o plano de atualização.
Requisitos de hardware e software para a instalação do SQL Server: revise os requisitos de software para a instalação do SQL Server. Se for necessário um software adicional, instale-o em cada nó antes de começar o processo de atualização para minimizar qualquer tempo de inatividade.
Verifique se a replicação ou captura de dados de alteração é usada em algum banco de dados AG: se qualquer banco de dados no AG estiver habilitado para CDC (captura de dados de alteração), conclua estas instruções.
Observação
- Não há suporte para a combinação de versões de instâncias do SQL Server no mesmo AG fora de uma atualização sem interrupção e não deve existir nesse estado por longos períodos de tempo, pois a atualização deve ocorrer rapidamente. A outra opção para atualizar o SQL Server 2016 (13.x) e versões posteriores é por meio do uso de um grupo de disponibilidade distribuído.
- Não há suporte para o uso do recurso de ATUALIZAÇÃO deCluster-Aware (CAU) do Windows para atualizar grupos de disponibilidade Always On.
Noções básicas de atualização sem interrupção para grupos de disponibilidade
Observe as diretrizes a seguir ao realizar atualizações de servidor para minimizar o tempo de inatividade e a perda de dados dos seus AGs:
Antes de iniciar a atualização sem interrupção:
Execute um failover manual de prática em pelo menos uma das instâncias de réplica de confirmação síncrona.
Proteja seus dados executando um backup de banco de dados completo em cada banco de dados de disponibilidade.
Execute
DBCC CHECKDBem todos os bancos de dados de disponibilidade.
Sempre execute a atualização das instâncias remotas da réplica secundária primeiro; depois, das instâncias locais da réplica secundária; por fim, da instância da réplica primária.
Os backups não podem ocorrer em um banco de dados que está no processo de ser atualizado. Antes de atualizar as réplicas secundárias, configure a preferência de backup automatizado para executar backups apenas na réplica primária. Durante uma atualização de versão, nenhuma réplica será legível ou estará disponível para backups. Durante uma atualização de não reversão, você pode configurar backups automatizados para serem executados em réplicas secundárias antes de atualizar a réplica primária.
Durante uma atualização de versão, secundários legíveis não podem ser lidos após uma atualização do secundário legível e antes do failover de uma réplica primária para uma secundária atualizada ou a da atualização da réplica primária.
Para proteger o AG contra failovers indesejados durante o processo de atualização, remova o failover de disponibilidade de todas as réplicas de confirmação síncrona antes de começar.
Não atualize a instância da réplica primária antes de fazer failover do AG para a instância atualizada com uma réplica secundária primeiro. Caso contrário, os aplicativos cliente poderão sofrer tempo de inatividade estendido durante a atualização na instância de réplica primária.
Sempre faça failover do AG em uma instância da réplica secundária de confirmação síncrona. Se você fizer failover para uma instância de réplica secundária de confirmação assíncrona, os bancos de dados estarão vulneráveis a perda de dados e a movimentação de dados será automaticamente suspensa até que você a retome manualmente.
Não atualize a instância da réplica primária antes de atualizar qualquer outra instância da réplica secundária. Uma réplica primária atualizada não pode mais enviar logs para nenhuma réplica secundária cuja instância do SQL Server ainda não tenha sido atualizada para a mesma versão. Quando a movimentação dos dados para uma réplica secundária for suspensa, nenhum failover automático poderá ocorrer nessa réplica, e os bancos de dados de disponibilidade ficarão vulneráveis à perda de dados. Isso também se aplica durante uma atualização sem interrupção em que você faz failover manualmente de um primário antigo para um novo primário. Assim, depois de atualizar o primário antigo, talvez seja necessário retomar a sincronização.
Antes de fazer failover em um AG, verifique se o estado da sincronização do destino do failover é
SYNCHRONIZED.Aviso
Instalar uma nova instância ou nova versão do SQL Server em um servidor que tenha uma versão mais antiga do SQL Server instalada pode causar inadvertidamente uma interrupção para qualquer grupo de disponibilidade hospedado pela versão mais antiga do SQL Server. Isso ocorre porque, durante a instalação da instância ou versão do SQL Server, o módulo de alta disponibilidade do SQL Server (
RHS.EXE) é atualizado. Isso resulta em uma interrupção temporária de seus grupos de disponibilidade existentes na função primária no servidor. Portanto, é altamente recomendável que você faça um dos seguintes procedimentos ao instalar uma versão mais recente do SQL Server em um sistema que já hospeda uma versão mais antiga do SQL Server com um grupo de disponibilidade:Instalar a nova versão do SQL Server durante uma janela de manutenção.
Faça failover do grupo de disponibilidade para a réplica secundária para que ela não seja primária durante a instalação da nova instância do SQL Server.
Processo de atualização sem interrupção
Na prática, o processo exato depende de fatores como a topologia da implantação dos AGs e o modo de confirmação de cada réplica. Porém, no cenário mais simples, uma atualização sem interrupção é um processo de várias fases que, em sua forma mais simples, envolve as seguintes etapas:
- Remover o failover automático em todas as réplicas de confirmação síncrona
- Atualizar todas as instâncias de réplica secundária de confirmação assíncrona.
- Atualizar todas as instâncias de réplica secundária remota de confirmação síncrona.
- Atualizar todas as instâncias de réplica secundária local de confirmação síncrona.
- Fazer failover manual do AG em uma réplica secundária local de confirmação síncrona (recém-atualizadas).
- Atualizar a instância de réplica local que hospedava anteriormente a réplica primária.
- Configurar parceiros de failover automático conforme desejado.
Se necessário, você pode executar um failover manual extra para retornar o AG à sua configuração original.
Atualizar uma réplica de confirmação síncrona e tirá-la offline não atrasará as transações no primário. Depois que a réplica secundária for desconectada, as transações serão confirmadas na primária sem aguardar a proteção dos logs na réplica secundária.
Se REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT estiver definido como ou 12, a réplica primária poderá estar indisponível para leitura/gravação quando um número correspondente de réplicas secundárias de sincronização não estiver disponível durante o processo de atualização.
Quando você executa uma atualização in-loco de uma réplica secundária para uma versão mais recente do SQL Server, o banco de dados dentro do grupo de disponibilidade permanece no estado Sincronizado/Em recuperação ou Sincronizado/Em Recuperação até que o grupo de disponibilidade faça failover manualmente, o que conclui a recuperação e atualiza o banco de dados. Uma réplica primária atualizada não pode mais enviar logs para nenhuma réplica secundária de versão inferior e paradas de movimentação de dados, nenhum failover automático pode ocorrer para essa réplica e seus bancos de dados de disponibilidade estão vulneráveis à perda de dados. Depois de atualizar o primário antigo, talvez seja necessário retomar a sincronização. Recomendamos atualizar todas as réplicas secundárias antes de fazer failover para uma réplica com a nova versão. Dessa forma, você tem a opção de fazer um failover depois que os bancos de dados são atualizados para o novo formato.
AG com uma réplica secundária remota
Se você implantou um AG apenas para recuperação de desastre, talvez seja necessário fazer failover do AG para uma réplica secundária de confirmação assíncrona. A figura a seguir ilustra essa configuração:
Nesse caso, você deve fazer failover do AG para uma réplica secundária de confirmação assíncrona durante a atualização sem interrupção. Para evitar a perda de dados, altere o modo de confirmação para confirmação síncrona e aguarde a sincronização da réplica secundária antes de fazer failover do AG. Portanto, o processo de atualização sem interrupção pode ter a seguinte aparência:
- Atualize a instância de réplica secundária no site remoto.
- Altere o modo de confirmação para confirmação síncrona.
- Aguarde até que o estado de sincronização seja
SYNCHRONIZED. - Faça failover do AG para a réplica secundária no site remoto.
- Atualize ou atualize a instância de réplica local (site primário).
- Faça failover do AG de volta para o site primário.
- Altere o modo de confirmação para confirmação assíncrona.
Como o modo de confirmação síncrona não é uma configuração recomendada para sincronização de dados com um site remoto, os aplicativos cliente podem notar um aumento imediato na latência do banco de dados após a alteração da configuração. Além disso, a execução de um failover fará com que todas as mensagens de log não confirmadas sejam descartadas. O número de mensagens de log descartadas pode ser significativo devido à alta latência de rede entre os dois sites, fazendo com que os clientes experimentem um alto volume de falha transacional. Você pode minimizar o efeito nos aplicativos cliente ao executar as seguintes ações:
Selecione cuidadosamente uma janela de manutenção durante o baixo tráfego do cliente.
Ao atualizar ou atualizar o SQL Server no site primário, altere o modo de disponibilidade de volta para confirmação assíncrona e, em seguida, reverta para confirmação síncrona quando estiver pronto para fazer failover para o site primário novamente.
AG com nós da instância de cluster de failover
Se um AG contiver nós de FCI (instância de cluster de failover), você deverá atualizar os nós inativos antes de atualizar os nós ativos. A figura a seguir ilustra um cenário de AG comum com FCIs para alta disponibilidade local e confirmação assíncrona entre as FCIs de recuperação de desastre remota e a sequência de upgrade.
- Atualizar ou fazer upgrade de
REMOTE2 - Fazer failover do FCI2 para
REMOTE2 - Atualizar ou fazer upgrade de
REMOTE1 - Atualizar ou fazer upgrade de
PRIMARY2 - Fazer failover de FCI1 para
PRIMARY2 - Atualizar ou fazer upgrade de
PRIMARY1
Atualizar instâncias do SQL Server com vários AGs
Se você estiver executando vários AGs com réplicas primárias em nós de servidor separados (uma configuração Ativa/Ativa), o caminho de atualização envolverá mais etapas de failover para preservar a alta disponibilidade no processo. Suponha que você esteja executando três AGs em três nós de servidor com todas as réplicas no modo de confirmação síncrona, conforme mostrado na tabela a seguir:
| AG | Node1 | Node2 | Node3 |
|---|---|---|---|
| AG1 | Primária | ||
| AG2 | Primária | ||
| AG3 | Primária |
Pode ser apropriado em sua situação executar uma atualização sem interrupção com balanceamento de carga na seguinte sequência:
- Fazer failover de AG2 para
Node3(para liberarNode2) - Atualizar ou fazer upgrade de
Node2 - Fazer failover de AG1 para
Node2(para liberarNode1) - Atualizar ou fazer upgrade de
Node1 - Fazer failover de AG2 e AG3 para
Node1(para liberarNode3) - Atualizar ou fazer upgrade de
Node3 - Fazer failover de AG3 para
Node3
Essa sequência de atualização tem um tempo de inatividade médio inferior a dois failovers por AG. A configuração resultante é mostrada na tabela a seguir.
| AG | Node1 | Node2 | Node3 |
|---|---|---|---|
| AG1 | Primária | ||
| AG2 | Primária | ||
| AG3 | Primária |
Com base em sua implementação específica, seu caminho de atualização pode variar e o tempo de inatividade que os aplicativos cliente experimentam também pode variar.
Observação
Em muitos casos, após a conclusão da atualização sem interrupção, você fará failback para a réplica primária original.
Atualização sem interrupção de um grupo de disponibilidade distribuído
Para executar uma atualização sem interrupção de um grupo de disponibilidade distribuído, atualize primeiro todas as réplicas secundárias. Em seguida, faça failover do encaminhador e atualize a última instância restante do segundo grupo de disponibilidade. Depois que todas as outras réplicas tiverem sido atualizadas, faça failover do primário global e atualize a última instância restante do primeiro grupo de disponibilidade. Um diagrama detalhado com etapas é fornecido em uma seção posterior.
Com base em sua implementação específica, seu caminho de atualização pode variar e o tempo de inatividade que os aplicativos cliente experimentam também pode variar.
Observação
Em muitos casos, após a conclusão da atualização sem interrupção, você fará failback para as réplicas primárias originais.
Etapas gerais para atualizar um grupo de disponibilidade distribuído
- Faça backup de todos os bancos de dados, incluindo bancos de dados do sistema e aqueles que participam do grupo de disponibilidade.
- Atualize e reinicie todas as réplicas secundárias do segundo grupo de disponibilidade (o downstream).
- Atualize e reinicie todas as réplicas secundárias do primeiro grupo de disponibilidade (o upstream).
- Faça failover do encaminhador primário para uma réplica secundária atualizada do grupo de disponibilidade secundário.
- Aguarde a sincronização de dados. Os bancos de dados devem ser mostrados como sincronizados em todas as réplicas de confirmação síncrona, e o primário global deve ser sincronizado com o encaminhador.
- Atualize e reinicie a última instância restante do grupo de disponibilidade secundário.
- Faça failover do primário global para um secundário atualizado do primeiro grupo de disponibilidade.
- Atualize a última instância restante do grupo de disponibilidade primário.
- Reinicie o servidor recém-atualizado.
- (opcional) Execute failback de ambos os grupos de disponibilidade para suas réplicas primárias originais.
Importante
Verifique a sincronização entre cada etapa. Antes de passar para a próxima etapa, confirme que suas réplicas de confirmação síncrona estão sincronizadas dentro do grupo de disponibilidade e que seu primário global está sincronizado com o encaminhador no grupo de disponibilidade distribuído.
Recomendação: Sempre que você verificar a sincronização, atualize o nó do banco de dados e o nó do grupo de disponibilidade distribuído no SQL Server Management Studio. Depois que tudo for sincronizado, salve uma captura de tela do estado de cada réplica. Isso ajuda você a acompanhar qual etapa você está, fornece evidências de que tudo estava funcionando corretamente antes da próxima etapa e ajuda você a solucionar problemas se algo der errado.
Diagrama de exemplo de uma atualização sem interrupção de um grupo de disponibilidade distribuído
| grupo de disponibilidade | Réplica primária | Réplica secundária |
|---|---|---|
| AG1 | NODE1\SQLAG |
NODE2\SQLAG |
| AG2 | NODE3\SQLAG |
NODE4\SQLAG |
| DistributedAG | AG1 (global) | AG2 (encaminhador) |
As etapas para atualizar as instâncias neste diagrama:
- Faça backup de todos os bancos de dados, incluindo os bancos de dados do sistema e os que participam do grupo de disponibilidade.
- Atualize
NODE4\SQLAG(secundário do AG2) e reinicie o servidor. - Atualize
NODE2\SQLAG(secundário do AG1) e reinicie o servidor. - Fazer failover de AG2 de
NODE3\SQLAGparaNODE4\SQLAG. - Atualize o
NODE3\SQLAGe reinicie o servidor. - Fazer failover de AG1 de
NODE1\SQLAGparaNODE2\SQLAG. - Atualize o
NODE1\SQLAGe reinicie o servidor. - (opcional) Execute failback para as réplicas primárias originais.
- Fazer failover de AG2 de
NODE4\SQLAGde volta paraNODE3\SQLAG. - Fazer failover de AG1 de
NODE2\SQLAGde volta paraNODE1\SQLAG.
- Fazer failover de AG2 de
Se uma terceira réplica existisse em cada grupo de disponibilidade, você a atualizaria antes NODE3\SQLAG e NODE1\SQLAG.
Importante
Verifique a sincronização entre cada etapa. Antes de passar para a próxima etapa, confirme que suas réplicas de confirmação síncrona estão sincronizadas dentro do grupo de disponibilidade e que seu primário global está sincronizado com o encaminhador no grupo de disponibilidade distribuído.
Recomendação: sempre que você verificar a sincronização, atualize o nó do banco de dados e o nó do grupo de disponibilidade distribuído no SQL Server Management Studio. Depois que tudo for sincronizado, tire uma captura de tela e salve-a. Isso ajuda você a acompanhar qual etapa você está, fornece evidências de que tudo estava funcionando corretamente antes da próxima etapa e ajuda você a solucionar problemas se algo der errado.
Etapas especiais para replicação ou captura de dados de alteração
Dependendo da atualização que está sendo aplicada, etapas adicionais podem ser necessárias para bancos de dados de réplica de AG habilitados para captura ou replicação de dados de alteração. Consulte as notas de versão da atualização para determinar se as etapas a seguir são necessárias:
Atualize todas as réplicas secundárias.
Depois de atualizar todas as réplicas secundárias, faça o failover no AG para a instância atualizada.
Execute o seguinte Transact-SQL na instância que hospeda a réplica primária:
EXECUTE [master].[sys].[sp_vupgrade_replication];Observação
Esse comando pode levar vários minutos para ser executado. Ignore esta etapa se estiver no SQL Server 2019 CU1 ou posterior. Para saber mais, examine KB4530283.
Atualize a instância que foi originalmente a réplica primária.
Para obter informações em segundo plano, consulte a funcionalidade CDC que pode ser interrompida após a atualização para a mais recente.