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 no Linux
Este tutorial mostra como criar e configurar um AG (grupo de disponibilidade) para o SQL Server no Linux. Ao contrário do SQL Server 2016 (13.x) e das versões anteriores no Windows, você pode habilitar um Grupo de Disponibilidade (AG) com ou sem criar primeiro o cluster do Pacemaker subjacente. A integração com o cluster, se necessário, acontece mais tarde.
O tutorial inclui as seguintes tarefas:
- Habilitar grupos de disponibilidade.
- Criar pontos de extremidade do grupo de disponibilidade e certificados.
- Use SQL Server Management Studio (SSMS) ou Transact-SQL para criar um grupo de disponibilidade.
- Crie o logon SQL Server e as permissões para o Pacemaker.
- Criar recursos de grupo de disponibilidade em um cluster do Pacemaker (tipo externo somente).
Pré-requisitos
Implante o cluster de alta disponibilidade do Pacemaker conforme descrito em Implantar um cluster do Pacemaker para SQL Server em Linux.
Habilitar o recurso grupos de disponibilidade
Ao contrário do Windows, você não pode usar o PowerShell nem o SQL Server Configuration Manager para habilitar o recurso de AG (grupos de disponibilidade). No Linux, você pode habilitar o recurso de grupos de disponibilidade de duas maneiras: usar o utilitário mssql-conf ou editar o mssql.conf arquivo manualmente.
Importante
Você deve habilitar o recurso de Grupos de Disponibilidade (AG) para réplicas de configuração apenas, mesmo no SQL Server Express.
Usar o utilitário mssql-conf
Em um prompt, execute o seguinte comando:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
Editar o arquivo mssql.conf
Você também pode modificar o mssql.conf arquivo, localizado na /var/opt/mssql pasta. Adicione as seguintes linhas:
[hadr]
hadr.hadrenabled = 1
Reinicie o SQL Server
Depois de habilitar grupos de disponibilidade, você deve reiniciar o SQL Server. Use o seguinte comando:
sudo systemctl restart mssql-server
Criar os pontos de extremidade do grupo de disponibilidade e certificados
Um grupo de disponibilidade usa pontos de extremidade TCP para comunicação. No Linux, os pontos de extremidade para um AG só terão suporte se os certificados forem usados para autenticação. Você deve restaurar o certificado de uma instância em todas as outras instâncias que participam como réplicas no mesmo AG. O processo de certificado é necessário até mesmo para uma réplica somente de configuração.
Você só pode criar endpoints e restaurar certificados usando o Transact-SQL. Você também pode usar certificados não gerados pelo SQL Server. Você também precisará de um processo para gerenciar e substituir todos os certificados que expirarem.
Importante
Se planejar usar o assistente SQL Server Management Studio para criar o AG, ainda precisará criar e restaurar os certificados usando o Transact-SQL no Linux.
Para obter a sintaxe completa das opções disponíveis para os vários comandos (incluindo segurança), consulte:
Observação
Embora você esteja criando um grupo de disponibilidade, o tipo de ponto de extremidade usa FOR DATABASE_MIRRORING, porque alguns aspectos subjacentes antes eram compartilhados com esse recurso agora preterido.
Este exemplo cria certificados para uma configuração de três nós. Os nomes das instâncias são LinAGN1, LinAGN2 e LinAGN3.
Execute o seguinte script no
LinAGN1para criar a chave mestra, o certificado e o ponto de extremidade, e para fazer backup do certificado. Para este exemplo, a porta TCP típica 5022 é usada para o ponto de extremidade.CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN1_Cert WITH SUBJECT = 'LinAGN1 AG Certificate'; GO BACKUP CERTIFICATE LinAGN1_Cert TO FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN1_Cert, ROLE = ALL ); GOFaça o mesmo no
LinAGN2:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN2_Cert WITH SUBJECT = 'LinAGN2 AG Certificate'; GO BACKUP CERTIFICATE LinAGN2_Cert TO FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN2_Cert, ROLE = ALL ); GOPor fim, execute a mesma sequência no
LinAGN3:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN3_Cert WITH SUBJECT = 'LinAGN3 AG Certificate'; GO BACKUP CERTIFICATE LinAGN3_Cert TO FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN3_Cert, ROLE = ALL ); GOUsando
scpo ou outro utilitário, copie os backups do certificado para cada nó que fará parte do AG.Para este exemplo:
- Copie
LinAGN1_Cert.cerparaLinAGN2eLinAGN3. - Copie
LinAGN2_Cert.cerparaLinAGN1eLinAGN3. - Copie
LinAGN3_Cert.cerparaLinAGN1eLinAGN2.
- Copie
Altere a propriedade e o grupo associado aos arquivos de certificado copiados para o
mssql.sudo chown mssql:mssql <CertFileName>Crie os logons e os usuário associados a
LinAGN2eLinAGN3noLinAGN1no nível da instância.CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GOCuidado
Sua senha deve seguir a política de senha padrão do SQL Server. Por padrão, a senha precisa ter pelo menos oito caracteres e conter caracteres de três dos seguintes quatro conjuntos: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As senhas podem ter até 128 caracteres. Use senhas longas e complexas.
Restaure
LinAGN2_CerteLinAGN3_CertnoLinAGN1. Ter os certificados de outras réplicas é um aspecto importante da comunicação e da segurança do AG.CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GOConceda aos logons associados a
LinAGN2eLinAGN3permissão para se conectarem ao ponto de extremidade noLinAGN1.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;Crie os logons e os usuário associados a
LinAGN1eLinAGN3noLinAGN2no nível da instância.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GORestaure
LinAGN1_CerteLinAGN3_CertnoLinAGN2.CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GOConceda aos logons associados a
LinAGN1eLinAGN3permissão para se conectarem ao ponto de extremidade noLinAGN2.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GOCrie os logons e os usuário associados a
LinAGN1eLinAGN2noLinAGN3no nível da instância.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GORestaure
LinAGN1_CerteLinAGN2_CertnoLinAGN3.CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GOConceda aos logons associados a
LinAG1eLinAGN2permissão para se conectarem ao ponto de extremidade noLinAGN3.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO
Crie o grupo de disponibilidade
Esta seção mostra como usar o SSMS (SQL Server Management Studio) ou Transact-SQL para criar o grupo de disponibilidade para o SQL Server.
Use SQL Server Management Studio.
Esta seção mostra como criar um AG com um tipo de cluster Externo usando o SSMS com o Assistente de Novo Grupo de Disponibilidade.
No SSMS, expanda Alta Disponibilidade Always On, clique com o botão direito do mouse em Grupos de Disponibilidade e selecione Assistente de Novo Grupo de Disponibilidade.
No diálogo Introdução, selecione Avançar.
Na caixa de diálogo Especificar Opções do Grupo de Disponibilidade, insira um nome para o grupo de disponibilidade e selecione um tipo de cluster
EXTERNALouNONEno menu suspenso. UseEXTERNALquando implantar o Pacemaker. UseNONEpara cenários especializados, como expansão de leitura. Selecionar a opção para detecção de integridade no nível do banco de dados é opcional. Para obter mais informações sobre essa opção, confira Opção de failover de detecção de integridade no nível do banco de dados do grupo de disponibilidade. Selecione Avançar.Na caixa de diálogo Selecionar Bancos de Dados, selecione os bancos de dados que participarão do AG. Cada banco de dados deve ter um backup completo antes de poder ser adicionado a um grupo de disponibilidade (AG). Selecione Avançar.
No diálogo Especificar Réplicas, selecione Adicionar Réplica.
Na caixa de diálogo Conectar-se ao Servidor, digite o nome da instância do Linux SQL Server que será a réplica secundária e as credenciais para conectar-se. Selecione Conectar.
Repita as duas etapas anteriores para a instância que conterá uma réplica somente de configuração ou outra réplica secundária.
Todas as três instâncias aparecem na caixa de diálogo Especificar Réplicas. Se você usar um tipo de cluster Externo, para a réplica secundária que será realmente secundária, certifique-se de que o Modo de Disponibilidade corresponda ao da réplica primária e que o Modo de Failover esteja definido como Externo. Para a réplica somente de configuração, selecione um modo de disponibilidade somente de Configuração.
O exemplo a seguir mostra um AG com duas réplicas, um tipo de cluster Externo e uma réplica somente de configuração.
O exemplo a seguir mostra um AG com duas réplicas, um tipo de cluster Nenhum e uma réplica somente de configuração.
Se você quiser alterar as preferências de backup, selecione a guia Preferências de Backup. Para obter mais informações sobre preferências de backup com AGs, consulte Configurar backups nas réplicas secundárias de um grupo de disponibilidade Always On.
Se você usar secundários legíveis ou criar um AG com o tipo de cluster "None" para escala de leitura, poderá criar um listener selecionando a guia Ouvinte. Você também pode adicionar um listener mais tarde. Para criar um ouvinte, escolha a opção Criar um ouvinte de grupo de disponibilidade e insira um nome, uma porta TCP/IP e se deseja usar um endereço IP DHCP estático ou atribuído automaticamente. Para um AG com um tipo de cluster None, o IP deve ser estático e definido como o endereço IP do primário.
Se você criar um ouvinte para cenários legíveis, o SSMS permitirá a criação do roteamento somente leitura no assistente. Você também pode adicioná-lo posteriormente por meio do SSMS ou do Transact-SQL. Para adicionar o roteamento somente leitura agora:
Selecione a guia Roteamento Somente Leitura.
Insira as URLs para as réplicas somente leitura. Essas URLs são semelhantes aos pontos de extremidade, exceto pelo fato de usarem a porta da instância, e não o ponto de extremidade.
Selecione cada URL e, na parte inferior, selecione as réplicas legíveis. Para seleção múltipla, mantenha pressionada a tecla SHIFT ou selecione e arraste.
Selecione Avançar.
Escolha como as réplicas secundárias são inicializadas. O padrão é usar a propagação automática, que requer o mesmo caminho em todos os servidores que participam do AG. Você também usar o assistente para fazer uma cópia de backup e restauração (a segunda opção); ingressar, se você tiver feito manualmente o backup, a cópia e a restauração do banco de dados nas réplicas (terceira opção), ou adicionar o banco de dados mais tarde (última opção). Assim como acontece com os certificados, se você estiver fazendo backups manualmente e copiando-os, defina permissões nos arquivos de backup nas outras réplicas. Selecione Avançar.
Na caixa de diálogo Validação, se tudo não for retornado como Sucesso, investigue. Alguns avisos são aceitáveis e não fatais, como se você não criar um ouvinte. Selecione Avançar.
No diálogo Resumo, selecione Concluir. O processo de criação do AG começa agora.
Quando a criação do AG for concluída, selecione Fechar nos Resultados. Agora, você pode ver o AG nas réplicas nas exibições de gerenciamento dinâmico e também na pasta Alta Disponibilidade Always On no SSMS.
Usar o Transact-SQL
Esta seção mostra exemplos de como criar um AG usando o Transact-SQL. Você pode configurar o listener e o roteamento de somente leitura depois de criar o AG. Você pode modificar o ag em si usando ALTER AVAILABILITY GROUP, mas não é possível alterar o tipo de cluster no SQL Server 2017 (14.x). Se você não pretender criar um AG com um tipo de cluster Externo, deverá excluí-lo e recriá-lo com um tipo de cluster Nenhum. Para obter mais informações e outras opções, consulte os seguintes links:
- CRIAR GRUPO DE DISPONIBILIDADE (Transact-SQL)
- ALTERAR GRUPO DE DISPONIBILIDADE (Transact-SQL)
- Configurar o roteamento somente leitura para um grupo de disponibilidade Always On
- Configurar um ouvinte para um grupo de disponibilidade Always On
Exemplo A: duas réplicas com uma réplica somente configuração (tipo de cluster Externo)
Esse exemplo mostra como criar um AG de duas réplicas que usa uma réplica somente de configuração.
Execute a instrução a seguir no nó que atuará como a réplica primária e contém a cópia de leitura/gravação completa dos bancos de dados. Este exemplo usa propagação automática.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N' TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SEEDING_MODE = AUTOMATIC ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', AVAILABILITY_MODE = CONFIGURATION_ONLY ); GOEm uma janela de consulta conectada à outra réplica, execute a instrução a seguir para unir a réplica ao AG e iniciar o processo de propagação do primário para a réplica secundária.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GOEm uma janela de consulta conectada à réplica de configuração única, execute a instrução a seguir para vinculá-la ao AG.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO
Exemplo B: três réplicas com roteamento somente leitura (tipo de cluster Externo)
Este exemplo mostra três réplicas completas e como você pode configurar o roteamento somente leitura como parte da criação inicial do AG.
Execute a seguinte instrução no nó que atuará como a réplica primária e que contém a cópia completa de leitura/gravação dos bancos de dados. Este exemplo usa propagação automática.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE < DBName > REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN2.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:1433') ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:1433') ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN3.FullyQualified.Name:1433') ) LISTENER '<ListenerName>' ( WITH IP = ('<IPAddress>', '<SubnetMask>'), Port = 1433 ); GOAlguns pontos a serem observados sobre essa configuração:
-
AGNameé o nome do grupo de disponibilidade. -
DBNameé o nome do banco de dados que você usa com o grupo de disponibilidade. Também pode ser uma lista de nomes separados por vírgulas. -
ListenerNameé um nome diferente de qualquer um dos servidores ou nós subjacentes. Ele está registrado no DNS junto comIPAddress. -
IPAddressé um endereço IP associado aListenerName. Ele também é único e não é o mesmo que nenhum dos servidores ou nós. Aplicativos e usuários finais usarãoListenerNameouIPAddresspara se conectarem ao AG.-
SubnetMaské a máscara de sub-rede doIPAddress. No SQL Server 2019 (15.x) e nas versões anteriores, esse valor é255.255.255.255. No SQL Server 2022 (16.x) e versões posteriores, esse valor é0.0.0.0.
-
-
Em uma janela de consulta conectada à outra réplica, execute a instrução a seguir para unir a réplica ao AG e iniciar o processo de propagação do primário para a réplica secundária.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GORepita a Etapa 2 para a terceira réplica.
Exemplo C: duas réplicas com roteamento somente leitura (tipo de cluster Nenhum)
Este exemplo mostra a criação de uma configuração de duas réplicas usando um tipo de cluster Nenhum. Use essa configuração para o cenário de escala de leitura em que não se espera a ocorrência de um failover. Esta etapa cria o listener que é, na verdade, a réplica primária, e o roteamento somente leitura usando a funcionalidade de round robin.
Execute a instrução a seguir no nó que atuará como a réplica primária e contém a cópia de leitura/gravação completa dos bancos de dados. Este exemplo usa propagação automática.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = NONE) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name: <PortOfEndpoint>', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (('LinAGN1.FullyQualified.Name'.'LinAGN2.FullyQualified.Name')) ), SECONDARY_ROLE( ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:<PortOfInstance>' ) ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfEndpoint>', FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ('LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name') )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfInstance>') ), LISTENER '<ListenerName>' (WITH IP = ( '<PrimaryReplicaIPAddress>', '<SubnetMask>'), Port = <PortOfListener> ); GONeste exemplo:
-
AGNameé o nome do grupo de disponibilidade. -
DBNameé o nome do banco de dados que você usa com o grupo de disponibilidade. Também pode ser uma lista de nomes separados por vírgulas. -
PortOfEndpointé o número da porta usado pelo ponto de extremidade que você cria.-
PortOfInstanceé o número da porta usada pela instância do SQL Server.
-
-
ListenerNameé um nome que é diferente de qualquer uma das réplicas subjacentes, mas que na realidade não é utilizado. -
PrimaryReplicaIPAddressé o endereço IP da réplica primária.-
SubnetMaské a máscara de sub-rede doIPAddress. No SQL Server 2019 (15.x) e nas versões anteriores, esse valor é255.255.255.255. No SQL Server 2022 (16.x) e versões posteriores, esse valor é0.0.0.0.
-
-
Ingresse a réplica secundária no AG e inicie a propagação automática.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = NONE); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Criar o logon SQL Server e as permissões para o Pacemaker
Um cluster de alta disponibilidade do Pacemaker que usa o SQL Server no Linux precisa de acesso à instância do SQL Server e permissões no próprio grupo de disponibilidade. Essas etapas criam o logon e as permissões associadas, juntamente com um arquivo que informa ao Pacemaker como fazer logon no SQL Server.
Em um período de consulta conectado à primeira réplica, execute o seguinte script:
CREATE LOGIN PMLogin WITH PASSWORD ='<password>'; GO GRANT VIEW SERVER STATE TO PMLogin; GO GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::<AGThatWasCreated> TO PMLogin; GONo nó 1, insira o comando:
sudo emacs /var/opt/mssql/secrets/passwdEsse comando abre o editor do Emacs.
Insira as duas linhas a seguir no editor:
PMLogin <password>Mantenha pressionada a tecla
Ctrle, em seguida, pressioneXe depoisCpara sair e salvar o arquivo.Execute:
sudo chmod 400 /var/opt/mssql/secrets/passwdpara bloquear o arquivo.
Repita as Etapas 1 a 5 nos outros servidores que servem como réplicas.
Crie os recursos do grupo de disponibilidade em um cluster do Pacemaker (somente tipo Externo)
Depois de criar um grupo de disponibilidade no SQL Server, você deve criar os recursos correspondentes no Pacemaker quando especificar um tipo de cluster externo. Dois recursos são associados a um grupo de disponibilidade: o próprio grupo de disponibilidade e um endereço IP. Configurar o recurso de endereço IP é opcional se você não estiver usando a funcionalidade do ouvinte, mas é recomendável.
O recurso de AG que você cria é um tipo de recurso chamado clone. O recurso de AG tem cópias em cada nó e um recurso controlador chamado mestre. O mestre está associado ao servidor que hospeda a réplica primária. Os outros recursos hospedam réplicas secundárias (regulares ou somente de configuração) e podem ser promovidos para mestre em um failover.
Crie o recurso do AG com a seguinte sintaxe:
sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s promotable notify=trueNeste exemplo,
NameForAGResourceé o nome exclusivo que você dá a esse recurso de cluster para o AG eAGNameé o nome do AG que você criou.Crie o recurso de endereço IP para o AG que você associa à funcionalidade do listener.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>Neste exemplo,
NameForIPResourceé o nome exclusivo do recurso IP eIPAddressé o endereço IP estático que você atribui ao recurso.Para garantir que o endereço IP e o recurso de AG são executados no mesmo nó, configure uma restrição de colocação.
sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITYNeste exemplo,
NameForIPResourceé o nome do recurso de IP eNameForAGResourceé o nome do recurso de AG.Crie uma restrição de ordenação para garantir que o recurso AG esteja em funcionamento antes do endereço IP. Embora a restrição de colocação indõe uma restrição de ordenação, esta etapa a impõe.
sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>Neste exemplo,
NameForIPResourceé o nome do recurso de IP eNameForAGResourceé o nome do recurso de AG.
Próxima etapa
Neste tutorial, você aprendeu a criar e configurar um grupo de disponibilidade para SQL Server no Linux. Você aprendeu a:
- Habilitar grupos de disponibilidade.
- Crie pontos de extremidade do AG e certificados.
- Use o SQL Server Management Studio (SSMS) ou o Transact-SQL para criar um AG.
- Crie o logon SQL Server e as permissões para o Pacemaker.
- Crie recursos do AG em um cluster do Pacemaker.
Para a maioria das tarefas de administração do AG, incluindo atualizações e failover, confira: