レプリカの再プロビジョニング - Azure Arc によって有効になっている SQL Managed Instance

この記事では、Azure Arc によって有効になっている SQL Managed Instance の既存のレプリカを置き換えるために新しいレプリカをプロビジョニングする方法について説明します。

レプリカを再プロビジョニングするときは、Azure Arc デプロイによって有効になっている SQL Managed Instance の新しいマネージド インスタンス レプリカを再構築します。 このタスクを使用して、同期に失敗しているレプリカを置き換えます。たとえば、そのインスタンスの永続ボリューム (PV) 上のデータが破損しているか、SQL の問題が繰り返し発生している場合などです。

az CLI を使用するか、kubectl を使用してレプリカを再プロビジョニングできます。 Azure portal からレプリカを再プロビジョニングすることはできません。

前提条件

レプリカの再プロビジョニングは、マルチレプリカ インスタンスでのみ行うことができます。

az CLI を使用する

Azure CLI az sql mi-arc コマンド グループには reprovision-replica が含まれています。 レプリカを再プロビジョニングするには、次の例を更新します。 <instance_name-replica_number> を、置き換えるレプリカのインスタンス名とレプリカ番号に置き換えます。 <namespace> を置き換えます。

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

たとえば、名前空間 arc 内のインスタンス mySqlInstance のレプリカ 2 を再プロビジョニングするには、次を使用します。

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

省略可能なパラメーター: --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

タスクを監視または削除する

kubectl を使用して yaml が適用されたら、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 を使用してタスクを削除する必要があります。

再プロビジョニング タスクのシリアル化の詳細: 1 つのインスタンスでレプリカを再プロビジョニングする複数の要求がある場合は、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 は、完了したエントリ sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132 が削除されるまで Creating 状態を維持します。