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 az
CLI ou via kubectl
. 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-replica
o . 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 kubectl
o , 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, mySqlinstance
réplica 2, 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íncronaaz 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 anteskubectl
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.531035
, permanecerá no status Creating
até que a concluída sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132
seja removida.