Always On Availability Group no SQL Server Linux

Olá pessoal,

Tudo bem? Que o SQL Server já está rodando em linux isso você já deve saber, mas a agora a novidade é que podemos utilizar o Always ON para prover um cenário de alta disponibilidade e preparado para ambientes de missão crítica!

Esta novidade foi liberada em fevereiro e de lá para cá, preparei um vídeo bem bacana ensinando passo a passo como instalar e configurar, confira a seguir:

A notícia oficial da Microsoft, você pode ler em:

SQL Server on Linux: Mission-critical HADR with Always On Availability Groups

SQL Server Missão Crítica - Linux

O cenário é acima é totalmente possível e irá proporcionar através do SQL Server, seja em Linux ou Windows a capacidade de prover High Availability e Disaster Recovery. A seguir, compartilho os scripts executados durante demonstração:

[sourcecode language=”sql”]
— 1º – Scripts a serem executado no primeiro nó:
CREATE LOGIN dbm_login WITH PASSWORD = ‘** senha **’;
CREATE USER dbm_user FOR LOGIN dbm_login;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘** senha **’;
GO
CREATE CERTIFICATE dbm_certificate WITH SUBJECT = ‘dbm’;
GO
BACKUP CERTIFICATE dbm_certificate TO FILE = ‘C:\var\opt\mssql\data\dbm_certificate.cer’ WITH PRIVATE KEY ( FILE = ‘C:\var\opt\mssql\data\dbm_certificate.pvk’, ENCRYPTION BY PASSWORD = ‘** senha **’);
GO

— 2º – Scripts a serem executado no segundo nó:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘** senha **’;
GO
CREATE CERTIFICATE dbm_certificate AUTHORIZATION dbm_user
FROM FILE = ‘C:\var\opt\mssql\data\dbm_certificate.cer’
WITH PRIVATE KEY (FILE = ‘C:\var\opt\mssql\data\dbm_certificate.pvk’, DECRYPTION BY PASSWORD = ‘** senha **’);
GO

— 3º – Scripts a serem executado no primeiro nó:
CREATE ENDPOINT [Hadr_endpoint] AS TCP (LISTENER_IP = (10.1.1.4), LISTENER_PORT = 5020)
FOR DATA_MIRRORING (ROLE = ALL, AUTHENTICATION = CERTIFICATE dbm_certificate, ENCRYPTION = REQUIRED ALGORITHM AES);
GO
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GO
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];
GO

— 4º – Scripts a serem executado no segundo nó:
CREATE ENDPOINT [Hadr_endpoint] AS TCP (LISTENER_IP = (10.1.1.5), LISTENER_PORT = 5020)
FOR DATA_MIRRORING (ROLE = ALL, AUTHENTICATION = CERTIFICATE dbm_certificate, ENCRYPTION = REQUIRED ALGORITHM AES);
GO
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GO
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];
GO

— 5º – Scripts a serem executado no primeiro nó:
CREATE AVAILABILITY GROUP [ag1]
WITH (DB_FAILOVER = ON, CLUSTER_TYPE = NONE)
FOR REPLICA ON
N’SRV002′ WITH (
ENDPOINT_URL = N’tcp://srv002:5020′,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC,
SEEDING_MODE = AUTOMATIC,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
),
N’SRV003′ WITH (
ENDPOINT_URL = N’tcp://srv003:5020′,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC,
SEEDING_MODE = AUTOMATIC,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
)
GO
ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
GO

— 6º – Scripts a serem executado no segundo nó:
ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE);
GO
ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
GO
[/sourcecode]

Feito a configuração do Always ON, agora podemos iniciar testes com a solução:

[sourcecode language=”sql”]
— Executar no primeiro nó
CREATE DATABASE [db1];
ALTER DATABASE [db1] SET RECOVERY FULL;
BACKUP DATABASE [db1] TO DISK = N’NUL’;
GO
ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];
GO
[/sourcecode]

Após tudo isso, então teremos um banco de dados rodando em cima do Always ON e em plataforma Linux, algo realmente fantástico!

Já estou preparando um outro artigo, onde estarei configurando o AlwaysON para rodar em Cluster dentro do linux.

Obrigado pessoal, não deixe de compartilhar e comentar.

Vithor da Silva e Silva | Consultor SQL Server e PowerBI


Fontes

2 thoughts on “Always On Availability Group no SQL Server Linux”

Deixe uma resposta