Published on

May 7, 2020

Configurando Grupos de Disponibilidade do SQL Server usando TSQL

Você está procurando configurar Grupos de Disponibilidade do SQL Server, mas prefere usar TSQL em vez da interface gráfica do SSMS? Neste artigo, vamos orientá-lo nas etapas necessárias para implantar um Grupo de Disponibilidade usando apenas código TSQL.

Considerações Iniciais

Antes de mergulhar na execução do código TSQL, há alguns fatores que você deve considerar para uma implementação bem-sucedida:

  • Verifique se você está usando configurações locais baseadas no Windows (não Linux ou Azure).
  • Para o SQL Server 2012 ou SQL Server 2014, use a edição Developer, Evaluation ou Enterprise. Para o SQL Server 2016 ou posterior, você pode usar a edição Standard para Grupos de Disponibilidade Básica e a edição Developer, Evaluation ou Enterprise para Grupos de Disponibilidade normais.
  • Garanta que haja conectividade entre as réplicas com as quais você estará trabalhando, incluindo portas abertas no firewall.
  • Verifique se o recurso Grupos de Disponibilidade está habilitado no SQL Server Configuration Manager (requer reinicialização da instância para ser aplicado).
  • Configure corretamente o Cluster de Falha que abrigará o recurso do Grupo de Disponibilidade.
  • Se estiver usando um testemunho de compartilhamento de arquivos no cluster, garanta que todos os nós possam interagir com ele.
  • Garanta que a mesma estrutura de disco exata esteja presente em todas as réplicas com as quais você estará trabalhando.
  • Defina o(s) banco(s) de dados que farão parte do Grupo de Disponibilidade no Modelo de Recuperação Completa.

Script TSQL e Etapas para Criar um Grupo de Disponibilidade

Depois de cuidar das considerações iniciais, siga estas etapas para criar um novo Grupo de Disponibilidade e adicionar bancos de dados a ele:

Etapa 1 – Criar Endpoint em Cada Réplica

Crie um endpoint em cada réplica usando o nome e número de porta do endpoint desejados. Garanta que o endpoint esteja iniciado.

USE master
GO

CREATE ENDPOINT Hadr_endpoint STATE = STARTED   
    AS TCP (LISTENER_PORT = 5022)   
    FOR DATABASE_MIRRORING (ROLE = ALL);  
GO

Etapa 1.a – Habilitar Endpoint, Se Necessário

Se o endpoint já estiver criado, mas desabilitado, inicie-o usando o seguinte código:

USE master
GO

IF (SELECT state FROM sys.endpoints WHERE name = N'Hadr_endpoint') <> 0
BEGIN
   ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED
END
GO

Etapa 2 – Conceder Permissão de Conexão ao Endpoint

Em cada réplica, conceda permissão de conexão ao endpoint para a conta de serviço que executa o serviço do mecanismo de banco de dados.

USE master
GO

GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [NT Service\MSSQLSERVER]
GO

Etapa 3 – Habilitar Evento Estendido para Monitoramento

Crie um evento estendido em cada réplica para coletar dados relacionados à saúde do seu Grupo de Disponibilidade.

USE master
GO

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name = 'AlwaysOn_health')
BEGIN
   ALTER EVENT SESSION [AlwaysOn_health] ON SERVER WITH (STARTUP_STATE=ON);
END

IF NOT EXISTS(SELECT * FROM sys.dm_xe_sessions WHERE name = 'AlwaysOn_health')
BEGIN
   ALTER EVENT SESSION [AlwaysOn_health] ON SERVER STATE=START;
END
GO

Etapa 4 – Realizar Backup dos Bancos de Dados

Realize backups completos e de log do(s) banco(s) de dados que farão parte do Grupo de Disponibilidade na instância que atuará como Réplica Primária.

USE master
GO

BACKUP DATABASE [test] TO DISK = 'C:\temp\test.bak' WITH COMPRESSION
GO

BACKUP LOG [test] TO DISK = 'C:\temp\test.trn' WITH COMPRESSION
GO

Etapa 5 – Copiar Arquivos de Backup para as Réplicas

Copie os arquivos de backup para cada servidor que atuará como Réplica Secundária e restaure os arquivos de backup.

USE master
GO

RESTORE DATABASE [test] FROM DISK = 'C:\temp\test.bak' WITH NORECOVERY
GO

RESTORE LOG [test] FROM DISK = 'C:\temp\test.trn' WITH NORECOVERY
GO

Etapa 6 – Criar Grupo de Disponibilidade na Primária

Crie o Grupo de Disponibilidade na réplica que será a Réplica Primária inicial.

USE master
GO

CREATE AVAILABILITY GROUP [TestAG]
WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY, DB_FAILOVER = ON, DTC_SUPPORT = NONE)
FOR DATABASE [test]
REPLICA ON 
N'YourSecondaryReplicaNameHere!!!' 
WITH (ENDPOINT_URL = N'TCP:// YourSecondaryReplicaNameHere.domain.com:5022', 
      FAILOVER_MODE = AUTOMATIC, 
      AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, 
      BACKUP_PRIORITY = 75, 
      SEEDING_MODE = MANUAL, 
      SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)
     ),
N'YourPrimaryReplicaNameHere!!!' 
WITH (ENDPOINT_URL = N'TCP:// YourPrimaryReplicaNameHere.domain.com:5022', 
      FAILOVER_MODE = AUTOMATIC, 
      AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, 
      BACKUP_PRIORITY = 25, 
      SEEDING_MODE = MANUAL, 
      SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)
     );
GO

Etapa 7 – Habilitar Grupo de Disponibilidade na Secundária

Associe cada Réplica Secundária ao Grupo de Disponibilidade.

USE master
GO

ALTER AVAILABILITY GROUP [TestAG] JOIN;
GO

Etapa 8 – Adicionar Banco de Dados ao Grupo de Disponibilidade na Secundária

Adicione o(s) banco(s) de dados desejado(s) ao Grupo de Disponibilidade em cada Réplica Secundária.

USE master
GO

ALTER DATABASE [test] SET HADR AVAILABILITY GROUP = [TestAG];
GO

Ao seguir essas etapas, você pode configurar com sucesso Grupos de Disponibilidade do SQL Server usando código TSQL. Garanta que cada etapa seja executada corretamente para obter uma configuração de Grupo de Disponibilidade estável e confiável.

Artigo Atualizado pela Última Vez: 2021-03-19

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.