Replica di reprovisioning: 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 provisioning di una replica, si ricompila una nuova replica di istanza gestita per un Istanza gestita di SQL abilitato dalla distribuzione di 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 persistenti (PV) per tale istanza o a causa di un problema SQL ricorrente.

È possibile effettuare nuovamente il provisioning di una replica tramite l'interfaccia az della riga di comando o tramite kubectl. Non è possibile eseguire nuovamente il provisioning di una replica dal portale di Azure.

Prerequisiti

È possibile effettuare nuovamente il provisioning di una replica solo in un'istanza con più repliche.

Tramite l'interfaccia az della riga di comando

Il gruppo di comandi dell'interfaccia della az sql mi-arc riga di comando di Azure include reprovision-replica. Per effettuare nuovamente il provisioning 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 nuovamente il provisioning 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 nuovamente il provisioning di una replica, è necessario eliminare l'attività prima che un altro reprovisioning possa essere eseguito 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 facoltativo --no-wait . 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 nuovamente il provisioning con kubectl, creare una risorsa personalizzata. Per creare una risorsa personalizzata per eseguire nuovamente il provisioning, è 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 precedente, mySqlinstance replica 2, 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 lo yaml tramite kubectl apply, è 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 nuovamente il provisioning di una replica, è necessario eliminare l'attività prima che un altro reprovisioning possa essere eseguito nella stessa istanza. Per altre informazioni, vedere Limitazioni.

Limiti

  • L'attività rifiuta i tentativi di effettuare nuovamente il provisioning della replica primaria corrente. Se la replica primaria corrente è danneggiata ed è necessaria la ripetizione del provisioning, eseguire il failover in una replica diversa e quindi richiedere il provisioning.

  • Il reprovisioning di più repliche nella stessa istanza viene eseguito in modo seriale. La coda delle attività e viene mantenuta nello Creating stato fino al termine dell'attività attiva e non viene eliminata. Non esiste alcuna pulizia automatica di un'attività completata, quindi questa serializzazione influirà anche se si esegue il az sql mi-arc reprovision-replica comando in modo sincrono e si attende il completamento prima di richiedere un altro reprovisioning. In tutti i casi, è necessario rimuovere l'attività tramite kubectl prima che un altro reprovisioning nella stessa istanza possa essere eseguito.

Altre informazioni sulla serializzazione delle attività di reprovisioning: se sono presenti più richieste per il provisioning di una replica in un'istanza, nell'output di un'istanza kubectl get SqlManagedInstanceReprovisionReplicaTaskpotrebbe essere visualizzato un risultato simile al seguente:

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à in stato Creating finché non viene rimossa quella sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132 completata.