Atualizar a Instância Gerenciada de SQL do Azure conectada indiretamente ao Azure Arc usando a CLI
Este artigo descreve como atualizar uma Instância Gerenciada de SQL implantada em um controlador de dados habilitado para Azure Arc indiretamente conectado usando a CLI do Azure (az
).
Pré-requisitos
Instalar ferramentas
Antes de você prosseguir com as tarefas deste artigo, instale:
A versão da extensão arcdata
e a versão da imagem estão relacionadas. Verifique se você tem a versão de extensão arcdata
correta que corresponde à versão de imagem para a qual você deseja atualizar no Log de versão.
Limitações
O controlador de dados do Azure Arc deve ser atualizado para a nova versão antes que a instância gerenciada possa ser atualizada.
Se a integração do Active Directory estiver habilitada, o conector do Active Directory deverá ser atualizado para a nova versão antes que a instância gerenciada possa ser atualizada.
A instância gerenciada deverá estar na mesma versão que o controlador de dados e o conector do Active Directory, antes que um controlador de dados seja atualizado.
Não há nenhum processo de atualização em lote disponível no momento.
Atualizar a instância gerenciada
Uma simulação pode ser executada primeiro. A simulação valida o esquema de versão e lista quais instâncias serão atualizadas.
Por exemplo:
az sql mi-arc upgrade --name <instance name> --k8s-namespace <namespace> --dry-run --use-k8s
A saída será:
Preparing to upgrade sql sqlmi-1 in namespace arc to data controller version.
****Dry Run****1 instance(s) would be upgraded by this commandsqlmi-1 would be upgraded to <version-tag>.
Uso Geral
Durante uma atualização de Uso Geral da Instância Gerenciada de SQL, o pod será encerrado e novamente provisionado na nova versão. Isso causará pouco tempo de inatividade enquanto o novo pod é criado. Você precisará criar resiliência em seu aplicativo, como lógica de nova tentativa de conexão, para garantir a interrupção mínima. Leia Visão geral do pilar de confiabilidade para obter mais informações sobre como arquitetar a resiliência e diretrizes de nova tentativa dos Serviços do Azure.
Comercialmente Crítico
Durante uma atualização Comercialmente Crítico da Instância Gerenciada de SQL com mais de uma réplica:
- Os pods de réplica secundários são encerrados e reprovisionados na nova versão
- Depois que as réplicas são atualizadas, o primário fará failover para uma réplica atualizada
- O pod primário anterior é encerrado, novamente provisionado na nova versão e se torna um secundário
Há um breve tempo de inatividade quando o failover ocorre.
Atualizar
Para atualizar a instância gerenciada, use o seguinte comando:
az sql mi-arc upgrade --name <instance name> --desired-version <version> --k8s-namespace <namespace> --use-k8s
Exemplo:
az sql mi-arc upgrade --name instance1 --desired-version v1.0.0.20211028 --k8s-namespace arc1 --use-k8s
Monitor
CLI
Você pode monitorar o progresso da atualização com o comando show
.
az sql mi-arc show --name <instance name> --k8s-namespace <namespace> --use-k8s
Saída
A saída do comando mostrará as informações do recurso. As informações de atualização estarão no Status.
Durante a atualização, State
o mostrará Updating
e Running Version
será a versão atual:
Status:
Log Search Dashboard: https://30.88.222.48:5601/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:sqlmi-1'))
Metrics Dashboard: https://30.88.221.32:3000/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=sqlmi-1-0
Observed Generation: 2
Primary Endpoint: 30.76.129.38,1433
Ready Replicas: 1/1
Running Version: v1.0.0_2021-07-30
State: Updating
Quando a atualização for concluída, o State
mostrará Ready
e Running Version
será a nova versão:
Status:
Log Search Dashboard: https://30.88.222.48:5601/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:sqlmi-1'))
Metrics Dashboard: https://30.88.221.32:3000/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=sqlmi-1-0
Observed Generation: 2
Primary Endpoint: 30.76.129.38,1433
Ready Replicas: 1/1
Running Version: <version-tag>
State: Ready
Solução de problemas
Quando a versão desejada for definida para uma versão específica, o trabalho de bootstrapper tentará atualizar para essa versão até obter êxito. Se a atualização for bem-sucedida, a propriedade RunningVersion
da especificação será atualizada para a nova versão. As atualizações podem falhar em cenários como, por exemplo, uma marca de imagem incorreta, a impossibilidade de conectar o registro ou o repositório, CPU ou memória insuficiente alocada para os contêineres ou armazenamento insuficiente.
Execute o comando abaixo para ver se algum dos pods mostra um status
Error
ou se tem um alto número de reinicializações:kubectl get pods --namespace <namespace>
Para examinar eventos em busca de um erro, execute
kubectl describe pod <pod name> --namespace <namespace>
Para obter uma lista dos contêineres nos pods, execute
kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
Para obter os logs de um contêiner, execute
kubectl logs <pod name> <container name> --namespace <namespace>
Para ver erros comuns e saber como solucioná-los, acesse Solução de problemas de recursos.