Reprovisionar réplica - Instância Gerenciada SQL habilitada pelo Azure Arc

Este artigo descreve como provisionar uma nova réplica para substituir uma réplica existente na Instância Gerenciada do SQL habilitada pelo Azure Arc.

Ao reprovisionar uma réplica, você recria uma nova réplica de instância gerenciada para uma Instância Gerenciada SQL habilitada pela implantação do Azure Arc. Use esta tarefa para substituir uma réplica que não está conseguindo sincronizar, por exemplo, devido a corrupção dos dados nos volumes persistentes (PV) para essa instância, ou devido a algum problema recorrente do SQL.

Você pode reprovisionar uma réplica via CLI ou via kubectlaz. Não é possível reprovisionar uma réplica do portal do Azure.

Pré-requisitos

Você só pode reprovisionar uma réplica em uma instância de várias réplicas.

Via az CLI

O grupo de comandos da CLI az sql mi-arc do Azure inclui reprovision-replicao . Para reprovisionar uma réplica, atualize o exemplo a seguir. Substitua <instance_name-replica_number> pelo nome da instância e número da réplica que você deseja substituir. Substitua <namespace>.

az sql mi-arc reprovision-replica -n <instance_name-replica_number> -k <namespace> --use-k8s

Por exemplo, para reprovisionar a réplica 2 da instância mySqlInstance no namespace arc, use:

az sql mi-arc reprovision-replica -n mySqlInstance-2 -k arc --use-k8s

O comando é executado até a conclusão, momento em que o console retorna o nome da tarefa do Kubernetes:

sql-reprov-replica-mySqlInstance-2-1664217002.376132 is Ready

Neste ponto, você pode examinar a tarefa ou excluí-la.

Examinar a tarefa

O exemplo a seguir retorna informações sobre o estado da tarefa Kubernetes:

kubectl describe SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc

Importante

Depois que uma réplica é reprovisionada, você deve excluir a tarefa antes que outro reprovisionamento possa ser executado na mesma instância. Para obter mais informações, consulte Limitações.

Elimine a tarefa

O exemplo a seguir exclui a tarefa Kubernetes:

kubectl delete SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc

Parâmetro da opção: --no-wait

Há um parâmetro opcional --no-wait para o comando. Se você enviar a solicitação com --no-wait, a saída incluirá o nome da tarefa a ser monitorada. Por exemplo:

az sql mi-arc reprovision-replica -n mySqlInstance-2 -k arc --use-k8s --no-wait
Reprovisioning replica mySqlInstance-2 in namespace `arc`. Please use
`kubectl get -n arc SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217434.531035`
to check its status or
`kubectl get -n arc SqlManagedInstanceReprovisionReplicaTask`
to view all reprovision tasks.

Através do kubectl

Para reprovisionar com kubectlo , crie um recurso personalizado. Para criar um recurso personalizado para reprovisionamento, você pode criar um arquivo .yaml com esta estrutura:

apiVersion: tasks.sql.arcdata.microsoft.com/v1beta1
kind: SqlManagedInstanceReprovisionReplicaTask
metadata:
  name: <task name you make up>
  namespace: <namespace>
spec:
  replicaName: instance_name-replica_number

Para usar o mesmo exemplo acima, réplica 2, mySqlinstance a carga útil é:

apiVersion: tasks.sql.arcdata.microsoft.com/v1beta1
kind: SqlManagedInstanceReprovisionReplicaTask
metadata:
  name: my-reprovision-task-mySqlInstance-2
  namespace: arc
spec:
  replicaName: mySqlInstance-2

Monitorar ou excluir a tarefa

Uma vez que o yaml é aplicado via kubectl apply, você pode monitorar ou excluir a tarefa via kubectl:

kubectl get -n arc SqlManagedInstanceReprovisionReplicaTask my-reprovision-task-mySqlInstance-2
kubectl describe -n arc SqlManagedInstanceReprovisionReplicaTask my-reprovision-task-mySqlInstance-2
kubectl delete -n arc SqlManagedInstanceReprovisionReplicaTask my-reprovision-task-mySqlInstance-2

Importante

Depois que uma réplica é reprovisionada, você deve excluir a tarefa antes que outro reprovisionamento possa ser executado na mesma instância. Para obter mais informações, consulte Limitações.

Limitações

  • A tarefa rejeita tentativas de reprovisionar a réplica primária atual. Se a réplica primária atual estiver corrompida e precisar de reprovisionamento, faça failover para uma réplica diferente e solicite o reprovisionamento.

  • O reprovisionamento de várias réplicas na mesma instância é executado em série. As tarefas são mantidas em Creating estado até que a tarefa atualmente ativa termine e seja excluída. Não há limpeza automática de uma tarefa concluída, portanto, essa serialização afetará você mesmo se você executar o comando de forma síncrona az sql mi-arc reprovision-replica e aguardar que ele seja concluído antes de solicitar outro reprovisionamento. Em todos os casos, você precisa remover a tarefa antes kubectl que outro reprovisionamento na mesma instância possa ser executado.

Mais detalhes sobre a serialização de tarefas de reprovisionamento: Se você tiver várias solicitações para reprovisionar uma réplica em uma instância, poderá ver algo assim na saída de um kubectl get SqlManagedInstanceReprovisionReplicaTask:

kubectl get SqlManagedInstanceReprovisionReplicaTask -n arc
NAME                                                     STATUS      AGE
sql-reprov-replica-c-sql-djlexlmty-1-1664217344.304601   Completed   13m
sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132   Completed   19m
sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035   Creating    12m

Essa última entrada para a réplica c-sql-kkncursza-1, , sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035permanecerá no status Creating até que a concluída sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132 seja removida.