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