Поделиться через


Реплика повторной подготовки — Управляемый экземпляр SQL включена Azure Arc

В этой статье описывается подготовка новой реплики для замены существующей реплики в Управляемый экземпляр SQL включенной Azure Arc.

При повторной подготовке реплики вы перестроите новую реплику управляемого экземпляра для Управляемый экземпляр SQL, включенной развертыванием Azure Arc. Используйте эту задачу для замены реплики, которая не выполняет синхронизацию, например из-за повреждения данных на постоянных томах (PV) для этого экземпляра или из-за некоторых повторяющихся проблем SQL.

Вы можете повторно создать реплику с помощью az интерфейса командной строки или через kubectl. Вы не можете повторно создать реплику из портал Azure.

Необходимые компоненты

Вы можете повторно создать реплику только в экземпляре с несколькими репликами.

С помощью az интерфейса командной строки

Включает в себя reprovision-replicaгруппу команд Azure CLIaz sql mi-arc. Чтобы повторно подготовить реплику, обновите следующий пример. Замените <instance_name-replica_number> именем экземпляра и номером реплики реплики, которую вы хотите заменить. Замените <namespace>.

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

Например, для повторной подготовки реплики 2 экземпляра mySqlInstance в пространстве arcимен используйте:

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

Команда выполняется до завершения, в какой момент консоль возвращает имя задачи Kubernetes:

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

На этом этапе можно либо проверить задачу, либо удалить ее.

Изучение задачи

В следующем примере возвращаются сведения о состоянии задачи Kubernetes:

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

Внимание

После повторной подготовки реплики необходимо удалить задачу, прежде чем еще одна повторная подготовка может выполняться в том же экземпляре. Дополнительные сведения см. в статье Ограничения.

удалить задачу;

В следующем примере удаляется задача Kubernetes:

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

Параметр option: --no-wait

Для команды существует необязательный --no-wait параметр. При отправке запроса --no-waitвыходные данные включают имя отслеживаемой задачи. Например:

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.

Использование kubectl

Для повторной подготовки kubectlсоздайте настраиваемый ресурс. Чтобы создать пользовательский ресурс для повторной подготовки, можно создать YAML-файл с этой структурой:

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

Чтобы использовать тот же пример, что и выше, mySqlinstance реплика 2, полезные данные:

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

Мониторинг или удаление задачи

После применения yaml с помощью kubectl можно отслеживать или удалять задачу с помощью 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

Внимание

После повторной подготовки реплики необходимо удалить задачу, прежде чем еще одна повторная подготовка может выполняться в том же экземпляре. Дополнительные сведения см. в статье Ограничения.

Ограничения

  • Задача отклоняет попытки повторной подготовки текущей первичной реплики. Если текущая первичная реплика повреждена и нуждается в повторной подготовке, выполните отработку отказа в другую реплику, а затем запросите повторную подготовку.

  • Повторная подготовка нескольких реплик в одном экземпляре выполняется последовательно. Очередь задач и хранится в Creating состоянии до тех пор, пока активная задача не завершится и не будет удалена. Автоматическая очистка завершенной задачи отсутствует, поэтому эта сериализация повлияет на вас, даже если выполнить az sql mi-arc reprovision-replica команду синхронно и дождаться завершения перед запросом другой повторной подготовки. Во всех случаях необходимо удалить задачу перед kubectl выполнением другой повторной подготовки на одном экземпляре.

Дополнительные сведения о сериализации задач повторной подготовки: если у вас несколько запросов для повторной подготовки реплики в одном экземпляре, в выходных данных из 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

Последняя запись для реплики c-sql-kkncursza-1 sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035будет оставаться в состоянии Creating до удаления завершенного sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132 .