Eseguire il reprovisioning della replica - Istanza gestita di SQL abilitata da Azure Arc
Questo articolo descrive come effettuare il provisioning di una nuova replica per sostituire una replica esistente in Istanza gestita di SQL abilitata da Azure Arc.
Quando si esegue il reprovisioning di una replica, si ricompila una nuova replica di istanza gestita per una distribuzione di Istanza gestita di SQL abilitata da Azure Arc. Usare questa attività per sostituire una replica che non riesce a eseguire la sincronizzazione, ad esempio a causa del danneggiamento dei dati nei volumi permanenti (PV) per tale istanza o a causa di un problema SQL ricorrente.
È possibile effettuare il reprovisioning di una replica tramite l'interfaccia della riga di comando az
o tramite kubectl
. Non è possibile effettuare il reprovisioning di una replica dal portale di Azure.
Prerequisiti
È possibile effettuare il reprovisioning di una replica solo in un'istanza con più repliche.
Tramite l'interfaccia della riga di comando az
Il gruppo di comandi az sql mi-arc
dell'interfaccia della riga di comando di Azure include reprovision-replica
. Per effettuare il reprovisioning di una replica, aggiornare l'esempio seguente. Sostituire <instance_name-replica_number>
con il nome dell'istanza e il numero di replica della replica da sostituire. Sostituire <namespace>
.
az sql mi-arc reprovision-replica -n <instance_name-replica_number> -k <namespace> --use-k8s
Ad esempio, per eseguire il reprovisioning della replica 2 dell'istanza mySqlInstance
nello spazio dei nomi arc
, usare:
az sql mi-arc reprovision-replica -n mySqlInstance-2 -k arc --use-k8s
Il comando viene eseguito fino al completamento; a quel punto, la console restituisce il nome dell'attività Kubernetes:
sql-reprov-replica-mySqlInstance-2-1664217002.376132 is Ready
A questo punto, è possibile esaminare l'attività o eliminarla.
Esaminare l'attività
L'esempio seguente restituisce informazioni sullo stato dell'attività Kubernetes:
kubectl describe SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc
Importante
Dopo aver eseguito il reprovisioning di una replica, è necessario eliminare l'attività prima di poter eseguire un altro reprovisioning nella stessa istanza. Per altre informazioni, vedere: Limitazioni.
Eliminare l'attività
L'esempio seguente elimina l'attività Kubernetes:
kubectl delete SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc
Parametro di opzione: --no-wait
Per il comando è disponibile un parametro --no-wait
facoltativo. Se si invia la richiesta con --no-wait
, l'output include il nome dell'attività da monitorare. Ad esempio:
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.
Tramite kubectl
Per eseguire il reprovisioning con kubectl
, creare una risorsa personalizzata. Per creare una risorsa personalizzata per eseguire il reprovisioning, è possibile creare un file yaml con questa struttura:
apiVersion: tasks.sql.arcdata.microsoft.com/v1beta1
kind: SqlManagedInstanceReprovisionReplicaTask
metadata:
name: <task name you make up>
namespace: <namespace>
spec:
replicaName: instance_name-replica_number
Per usare lo stesso esempio usato in precedenza, replica 2 mySqlinstance
, il payload è:
apiVersion: tasks.sql.arcdata.microsoft.com/v1beta1
kind: SqlManagedInstanceReprovisionReplicaTask
metadata:
name: my-reprovision-task-mySqlInstance-2
namespace: arc
spec:
replicaName: mySqlInstance-2
Monitorare o eliminare l'attività
Dopo aver applicato il file yaml tramite l'applicazione di kubectl, è possibile monitorare o eliminare l'attività tramite 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
Dopo aver eseguito il reprovisioning di una replica, è necessario eliminare l'attività prima di poter eseguire un altro reprovisioning nella stessa istanza. Per altre informazioni, vedere: Limitazioni.
Limiti
L'attività rifiuta i tentativi di effettuare il reprovisioning della replica primaria corrente. Se la replica primaria corrente è danneggiata e è necessario un reprovisioning, eseguire il failover in una replica diversa, quindi richiedere il reprovisioning.
Il reprovisioning di più repliche nella stessa istanza viene eseguito in modo seriale. Le attività sono aggiunte alla coda e vengono mantenute nello stato
Creating
fino a che l'attività attiva corrente non finisce e non viene eliminata. Non esiste alcuna pulizia automatica di un'attività completata, pertanto questa serializzazione influirà anche se si esegue il comandoaz sql mi-arc reprovision-replica
in modo sincrono e si attende il completamento prima di richiedere un nuovo reprovisioning. In tutti i casi, è necessario rimuovere l'attività tramitekubectl
prima di poter eseguire un altro reprovisioning nella stessa istanza.
Altre informazioni sulla serializzazione delle attività di reprovisioning: se sono presenti più richieste per il reprovisioning di una replica in un'istanza, nell'output potrebbe essere visualizzato un risultato simile al seguente da 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
L'ultima voce per la replica c-sql-kkncursza-1, sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035
, rimarrà nello stato Creating
finché non verrà rimosso l'elemento sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132
completato.