Hoje irei demonstrar como aplicar o cumulative update no ambiente SQL Server com Always On, estes passos foram executados em um ambiente muito grande e crítico, que funciona 24X7 sendo consumido por um sistema muito importante usado por diversos órgãos de um determinado Estado no Brasil.
Arquitetura básica do Always On:
Cenário: Servidor master de escrita: 124 cores, 2TB de memória ram, 28tb de databases, duas replicas synchronous com 124 cores, 2TB de memória ram, 28tb de databases.
Versão do SQL Server Enterprise atual: 2017
Cumulative Update a ser aplicado: 31
1 – Processo para aplicação do Cumulative Update Always On:
1.1 – Verificando o cumulative update atual do ambiente:
SELECT SERVERPROPERTY('MachineName') AS [MachineName],
SERVERPROPERTY('ServerName') AS [ServerName],
SERVERPROPERTY('Edition') AS [Edition],
SERVERPROPERTY('ProductLevel') AS [ProductLevel],
SERVERPROPERTY('ProductUpdateLevel') AS [ProductUpdateLevel],
SERVERPROPERTY('ProductVersion') AS [ProductVersion],
SERVERPROPERTY('ProductUpdateReference') AS [ProductUpdateReference]
1.2 – Verificar se as replicas de leitura estão sincronizadas:
1.3 – Se estiver utilizando o modo Asynchronous, altere para Synchronous e o Failover Mode para Manual:
1.4 -Aplique o cumulative update na replica de leitura:
1.5 – Verifique o cumulative update aplicado:
SELECT SERVERPROPERTY('MachineName') AS [MachineName],
SERVERPROPERTY('ServerName') AS [ServerName],
SERVERPROPERTY('Edition') AS [Edition],
SERVERPROPERTY('ProductLevel') AS [ProductLevel],
SERVERPROPERTY('ProductUpdateLevel') AS [ProductUpdateLevel],
SERVERPROPERTY('ProductVersion') AS [ProductVersion],
SERVERPROPERTY('ProductUpdateReference') AS [ProductUpdateReference]
1.6 – Aguarde ate que a replica de leitura que aplicamos o cumulative update esteja sincronizada:
1.7 – Após a sincronização, iremos fazer o failover do master para a replica de leitura:
1.8 – Aguarde ate que a replica de leitura que aplicamos o cumulative update esteja sincronizada, neste ponto tivemos um problema, a base após o failover ficou em recover por 1 hora e não mudava o status de 0% concluído, aguardamos um longo tempo e nada de sincronizar, optamos por reiniciar o serviço do SQL Server, por incrível que pareça isso resolveu o problema e o always on sincronizou o banco, fica a duvida se estávamos com um bug de produto por estar utilizando a RTM, ou só Deus sabe qual era o problema.
1.9 Aplique o cumulative update no servidor 1 que agora é o secundário para leitura:
1.10 – Aguarde ate que o always on esteja com a base sincronizada:
1.11 – Faça o failover de volta para o servidor anterior, aguarde o sincronismo do Always On, se estiver utilizando o modo Asynchronous altere de Synchronous para Asynchronous, se estiver usando o Failover Mode Automatic mude de Manual para Automatic.
Linsk da documentação:
https://learn.microsoft.com/pt-br/sql/database-engine/availability-groups/windows/upgrading-always-on-availability-group-replica-instances?view=sql-server-ver16
https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/upgrading-always-on-availability-group-replica-instances?view=sql-server-ver15