Reprovisionar réplica – Instância Gerenciada de SQL habilitada pelo Azure Arc
Este artigo descreve como provisionar uma nova réplica para substituir uma réplica existente na Instância Gerenciada de SQL habilitada pelo Azure Arc.
Ao reprovisionar uma réplica, você recria uma réplica da instância gerenciada para uma Instância Gerenciada de SQL habilitada pela implantação do Azure Arc. Realize essa tarefa para substituir uma réplica com falha na sincronização, por exemplo, devido à corrupção dos dados no PV (volume persistente) dessa instância ou a algum problema recorrente de SQL.
É possível reprovisionar uma réplica por meio da CLI az
ou por meio do kubectl
. Não é possível reprovisionar uma réplica por meio do portal do Azure.
Pré-requisitos
Só é possível reprovisionar uma réplica em uma instância com diversas réplicas.
Por meio da CLI do az
O grupo de comandos az sql mi-arc
da CLI do Azure inclui reprovision-replica
. Para reprovisionar uma réplica, atualize o exemplo a seguir. Substitua <instance_name-replica_number>
pelo nome da instância e pelo número da réplica que você deseja substituir. Substituir <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, quando o console retorna o nome da tarefa do Kubernetes:
sql-reprov-replica-mySqlInstance-2-1664217002.376132 is Ready
Nesse momento, é possível examinar a tarefa ou excluí-la.
Examinar a tarefa
O exemplo a seguir retorna informações sobre o estado da tarefa do Kubernetes:
kubectl describe SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc
Importante
Após o reprovisionamento de uma réplica, é necessário excluir a tarefa antes de realizar outro reprovisionamento na mesma instância. Para obter mais informações, confira Limitações.
Excluir a tarefa
O exemplo a seguir exclui a tarefa do Kubernetes:
kubectl delete SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc
Parâmetro opcional: --no-wait
Há um parâmetro --no-wait
opcional 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.
Por meio de kubectl
Para o reprovisionamento com kubectl
, crie um recurso personalizado. Se você quiser criar um recurso personalizado para o reprovisionamento, crie um arquivo .yaml com a seguinte 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 será:
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
Depois da aplicação do yaml por meio de kubectl apply, é possível monitorar ou excluir a tarefa por meio do 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
Após o reprovisionamento de uma réplica, é necessário excluir a tarefa antes de realizar outro reprovisionamento na mesma instância. Para obter mais informações, confira Limitações.
Limitações
A tarefa rejeita tentativas de reprovisionamento da réplica primária atual. Se a réplica primária atual estiver corrompida e precisar de reprovisionamento, faça o failover para uma réplica diferente e solicite-o.
O reprovisionamento de diversas réplicas na mesma instância é executado em série. As tarefas são enfileiradas e mantidas no estado
Creating
até que a tarefa atualmente ativa seja concluída e excluída. Não há limpeza automática de uma tarefa concluída, portanto, essa serialização afetará você mesmo que você execute o comandoaz sql mi-arc reprovision-replica
de maneira síncrona e aguarde a conclusão antes de solicitar outro reprovisionamento. Em todos os casos, você precisa remover a tarefa por meio dekubectl
antes que outro reprovisionamento possa ser executado na mesma instância.
Mais detalhes sobre a serialização de tarefas de reprovisionamento: se você tiver várias solicitações de reprovisionamento de uma réplica em uma instância, a saída de um kubectl get SqlManagedInstanceReprovisionReplicaTask
será parecida com o seguinte:
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.531035
, permanecerá no status Creating
até que o sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132
concluído seja removido.