Configurar um grupo de failover - CLI
Este artigo explica como configurar a recuperação de desastres para a Instância Gerenciada SQL habilitada pelo Azure Arc com a CLI. Antes de continuar, revise as informações e os pré-requisitos na Instância Gerenciada do SQL habilitada pelo Azure Arc - recuperação de desastres.
Pré-requisitos
Os seguintes pré-requisitos devem ser atendidos antes de configurar grupos de failover entre duas instâncias da Instância Gerenciada SQL habilitada pelo Azure Arc:
- Um controlador de dados do Azure Arc e uma instância gerenciada SQL habilitada para Arc provisionados no site primário com
--license-type
como um dosBasePrice
ouLicenseIncluded
. - Um controlador de dados do Azure Arc e uma instância gerenciada SQL habilitada para Arc provisionados no site secundário com configuração idêntica à principal em termos de:
- CPU
- Memória
- Armazenamento
- Camada de serviço
- Ordenação
- Outras configurações de instância
- A instância no site secundário requer
--license-type
comoDisasterRecovery
. Essa instância precisa ser nova, sem nenhum objeto de usuário.
Observação
- É importante especificar o
--license-type
durante a criação da instância gerenciada. Isso permitirá que a instância de DR seja semeada da instância primária no data center primário. A atualização dessa propriedade após a implantação não terá o mesmo efeito.
Processo de implantação
Para configurar um grupo de failover do Azure entre duas instâncias, conclua as seguintes etapas:
- criar recurso personalizado para o grupo de disponibilidade distribuído no site primário;
- criar recurso personalizado para o grupo de disponibilidade distribuído no site secundário;
- Copiar os dados binários dos certificados de espelhamento
- Configurar o grupo de disponibilidade distribuída entre os sites primário e secundário no modo
sync
ou no modoasync
A imagem a seguir mostra um grupo de disponibilidade distribuído configurado corretamente:
Modos de sincronização
Os grupos de failover nos serviços de dados do Azure Arc dão suporte a dois modos de sincronização - sync
e async
. O modo de sincronização afeta diretamente como os dados são sincronizados entre as instâncias e, potencialmente, o desempenho na instância gerenciada primária.
Se os sites primário e secundário estiverem a poucos quilômetros um do outro, use o modo sync
. Caso contrário, use o modo async
para evitar qualquer impacto no desempenho do site primário.
Configurar o grupo de failover do Azure - modo direto
Siga as etapas abaixo se os serviços de dados do Azure Arc forem implantados no directly
modo conectado.
Depois que os pré-requisitos forem atendidos, execute o comando abaixo para configurar o grupo de failover do Azure entre as duas instâncias:
az sql instance-failover-group-arc create --name <name of failover group> --mi <primary SQL MI> --partner-mi <Partner MI> --resource-group <name of RG> --partner-resource-group <name of partner MI RG>
Exemplo:
az sql instance-failover-group-arc create --name sql-fog --mi sql1 --partner-mi sql2 --resource-group rg-name --partner-resource-group rg-name
O comando acima:
- Cria os recursos personalizados necessários em sites primários e secundários
- Copia os certificados de espelhamento e configura o grupo de failover entre as instâncias
Configurar o grupo de failover do Azure - modo indireto
Siga as etapas abaixo se os serviços de dados do Azure Arc forem implantados no indirectly
modo conectado.
Provisionar a instância gerenciada no site primário.
az sql mi-arc create --name <primaryinstance> --tier bc --replicas 3 --k8s-namespace <namespace> --use-k8s
Alterne o contexto para o cluster secundário executando
kubectl config use-context <secondarycluster>
e provisione a instância gerenciada no site secundário que será a instância de recuperação de desastres. Neste ponto, os bancos de dados do sistema não fazem parte do grupo de disponibilidade contido.Observação
É importante especificar
--license-type DisasterRecovery
durante a instância gerenciada. Isso permitirá que a instância de DR seja semeada da instância primária no data center primário. A atualização dessa propriedade após a implantação não terá o mesmo efeito.az sql mi-arc create --name <secondaryinstance> --tier bc --replicas 3 --license-type DisasterRecovery --k8s-namespace <namespace> --use-k8s
Certificados de espelhamento: os dados binários contidos na propriedade Certificado de Espelhamento da instância gerenciada são necessários para a criação do CR (recurso personalizado) do Grupo de Failover da Instância.
Isso pode ser feito de algumas maneiras:
(a) Se estiver usando a CLI
az
, primeiro gere o arquivo de certificado de espelhamento e, em seguida, aponte para esse arquivo enquanto configura o Grupo de Failover da Instância para que os dados binários sejam lidos do arquivo e copiados para o CR. Os arquivos de certificado não são necessários após a criação do grupo de failover.(b) Se estiver usando o
kubectl
, copie e cole diretamente os dados binários do CR da instância gerenciada no arquivo YAML que será usado para criar o Grupo de Failover da Instância.Usando (a) acima:
Crie o arquivo de certificado de espelhamento para a instância primária:
az sql mi-arc get-mirroring-cert --name <primaryinstance> --cert-file </path/name>.pem --k8s-namespace <namespace> --use-k8s
Exemplo:
az sql mi-arc get-mirroring-cert --name sqlprimary --cert-file $HOME/sqlcerts/sqlprimary.pem --k8s-namespace my-namespace --use-k8s
Conecte-se ao cluster secundário e crie o arquivo de certificado de espelhamento para a instância secundária:
az sql mi-arc get-mirroring-cert --name <secondaryinstance> --cert-file </path/name>.pem --k8s-namespace <namespace> --use-k8s
Exemplo:
az sql mi-arc get-mirroring-cert --name sqlsecondary --cert-file $HOME/sqlcerts/sqlsecondary.pem --k8s-namespace my-namespace --use-k8s
Depois que os arquivos de certificado de espelhamento forem criados, copie o certificado da instância secundária para um caminho compartilhado/local no cluster de instância primária e vice-versa.
Criar o recurso do grupo de failover nos dois sites.
Observação
Verifique se as instâncias SQL têm nomes diferentes para sites primários e secundários e se o valor
shared-name
precisa ser idêntico em ambos os sites.az sql instance-failover-group-arc create --shared-name <name of failover group> --name <name for primary failover group resource> --mi <local SQL managed instance name> --role primary --partner-mi <partner SQL managed instance name> --partner-mirroring-url tcp://<secondary IP> --partner-mirroring-cert-file <secondary.pem> --k8s-namespace <namespace> --use-k8s
Exemplo:
az sql instance-failover-group-arc create --shared-name myfog --name primarycr --mi sqlinstance1 --role primary --partner-mi sqlinstance2 --partner-mirroring-url tcp://10.20.5.20:970 --partner-mirroring-cert-file $HOME/sqlcerts/sqlinstance2.pem --k8s-namespace my-namespace --use-k8s
Na instância secundária, execute o seguinte comando para configurar o recurso personalizado do grupo de failover. O
--partner-mirroring-cert-file
neste caso deve apontar para um caminho que tenha o arquivo de certificado de espelhamento gerado a partir da instância primária conforme descrito em 3(a) acima.az sql instance-failover-group-arc create --shared-name <name of failover group> --name <name for secondary failover group resource> --mi <local SQL managed instance name> --role secondary --partner-mi <partner SQL managed instance name> --partner-mirroring-url tcp://<primary IP> --partner-mirroring-cert-file <primary.pem> --k8s-namespace <namespace> --use-k8s
Exemplo:
az sql instance-failover-group-arc create --shared-name myfog --name secondarycr --mi sqlinstance2 --role secondary --partner-mi sqlinstance1 --partner-mirroring-url tcp://10.10.5.20:970 --partner-mirroring-cert-file $HOME/sqlcerts/sqlinstance1.pem --k8s-namespace my-namespace --use-k8s
Recuperar o estado de integridade do grupo de failover do Azure
As informações sobre o grupo de failover, como função primária, função secundária e o status de integridade atual, podem ser exibidas no recurso personalizado no site primário ou secundário.
Execute o comando abaixo no site primário e/ou secundário para listar o recurso personalizado dos grupos de failover:
kubectl get fog -n <namespace>
Descreva o recurso personalizado para recuperar o status do grupo de failover, da seguinte maneira:
kubectl describe fog <failover group cr name> -n <namespace>
Operações de grupos de failover
Depois que o grupo de failover é configurado entre as instâncias gerenciadas, diferentes operações de failover podem ser executadas, dependendo das circunstâncias.
Os possíveis cenários de failover são:
As instâncias em ambos os sites estão em estado íntegro e um failover precisa ser executado:
- executar um failover manual do primário para o secundário sem perda de dados definindo
role=secondary
na MI SQL primária.
- executar um failover manual do primário para o secundário sem perda de dados definindo
O site primário não está íntegro/inacessível e um failover precisa ser executado:
- a Instância Gerenciada SQL primária habilitada pelo Azure Arc está inativa/não íntegra/inacessível
- a Instância Gerenciada SQL secundária habilitada pelo Azure Arc precisa ser promovida à força para primária com potencial perda de dados
- quando a Instância Gerenciada SQL primária original habilitada pelo Azure Arc voltar a ficar online, ela será relatada como
Primary
função e estado não íntegro e precisará ser forçada a uma funçãosecondary
para que possa ingressar no grupo de failover e os dados possam ser sincronizados.
Failover manual (sem perda de dados)
Use az sql instance-failover-group-arc update ...
grupo de comandos para iniciar um failover do primário para o secundário. Todas as transações pendentes na instância geográfica primária são replicadas para a instância geográfica secundária antes do failover.
Modo de conexão direta
Execute o seguinte comando para iniciar um failover manual, em direct
modo conectado usando APIs ARM:
az sql instance-failover-group-arc update --name <shared name of failover group> --mi <primary instance> --role secondary --resource-group <resource group>
Exemplo:
az sql instance-failover-group-arc update --name myfog --mi sqlmi1 --role secondary --resource-group myresourcegroup
Modo conectado indiretamente
Execute o seguinte comando para iniciar um failover manual, no modo conectado indirect
usando APIs do kubernetes:
az sql instance-failover-group-arc update --name <name of failover group resource> --role secondary --k8s-namespace <namespace> --use-k8s
Exemplo:
az sql instance-failover-group-arc update --name myfog --role secondary --k8s-namespace my-namespace --use-k8s
Failover forçado com perda de dados
Na circunstância em que a instância geográfica primária se torna indisponível, os comandos a seguir podem ser executados na instância de recuperação de desastre geográfica secundária para promover para a primária com um failover forçado gerando potencial perda de dados.
Na instância de recuperação de desastre geográfica secundária, execute o comando a seguir para promovê-la para a função primária, com perda de dados.
Observação
Se o --partner-sync-mode
foi configurado como sync
, ele precisará ser redefinido para async
quando o secundário for promovido a principal.
Modo de conexão direta
az sql instance-failover-group-arc update --name <shared name of failover group> --mi <instance> --role force-primary-allow-data-loss --resource-group <resource group> --partner-sync-mode async
Exemplo:
az sql instance-failover-group-arc update --name myfog --mi sqlmi2 --role force-primary-allow-data-loss --resource-group myresourcegroup --partner-sync-mode async
Modo conectado indiretamente
az sql instance-failover-group-arc update --k8s-namespace my-namespace --name secondarycr --use-k8s --role force-primary-allow-data-loss --partner-sync-mode async
Quando a instância primária geográfica ficar disponível, execute o comando abaixo para levá-la para o grupo de failover e sincronizar os dados:
Modo conectado diretamente
az sql instance-failover-group-arc update --name <shared name of failover group> --mi <old primary instance> --role force-secondary --resource-group <resource group>
Modo conectado indiretamente
az sql instance-failover-group-arc update --k8s-namespace my-namespace --name secondarycr --use-k8s --role force-secondary
Opcionalmente, o --partner-sync-mode
pode ser configurado de volta para o modo sync
, se desejado.
Operações pós-failover
Depois de executar um failover do site primário para o site secundário, com ou sem perda de dados, talvez seja necessário fazer o seguinte:
- Atualize a cadeia de conexão para que seus aplicativos se conectem à instância gerenciada Arc SQL primária recém-promovida
- Se você planeja continuar executando a carga de trabalho de produção fora do site secundário, atualize o
--license-type
paraBasePrice
ouLicenseIncluded
para iniciar o faturamento dos vCores consumidos.