Replika provisi ulang - SQL Managed Instance diaktifkan oleh Azure Arc

Artikel ini menjelaskan cara menyediakan replika baru untuk mengganti replika yang ada di SQL Managed Instance yang diaktifkan oleh Azure Arc.

Saat Anda memprovisikan ulang replika, Anda membangun kembali replika instans terkelola baru untuk SQL Managed Instance yang diaktifkan oleh penyebaran Azure Arc. Gunakan tugas ini untuk mengganti replika yang gagal disinkronkan, misalnya, karena kerusakan data pada volume persisten (PV) untuk instans tersebut, atau karena beberapa masalah SQL berulang.

Anda dapat memprovisikan ulang replika melalui az CLI atau melalui kubectl. Anda tidak dapat memprovisi ulang replika dari portal Azure.

Prasyarat

Anda hanya dapat memprovisi ulang replika pada instans multi-replika.

Melalui az CLI

Grup perintah Azure CLI az sql mi-arc menyertakan reprovision-replica. Untuk menyediakan ulang replika, perbarui contoh berikut. Ganti <instance_name-replica_number> dengan nama instans dan nomor replika replika yang ingin Anda ganti. Ganti <namespace>.

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

Misalnya, untuk memprovisi ulang replika 2 instans mySqlInstance di namespace arc, gunakan:

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

Perintah berjalan hingga selesai, di mana konsol mengembalikan nama tugas Kubernetes:

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

Pada titik ini, Anda dapat memeriksa tugas atau menghapusnya.

Memeriksa tugas

Contoh berikut mengembalikan informasi tentang status tugas Kubernetes:

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

Penting

Setelah replika diprovisikan ulang, Anda harus menghapus tugas sebelum provisi ulang lain dapat berjalan pada instans yang sama. Untuk informasi selengkapnya, lihat Batasan.

Hapus tugas

Contoh berikut menghapus tugas Kubernetes:

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

Parameter opsi: --no-wait

Ada parameter opsional --no-wait untuk perintah . Jika Anda mengirim permintaan dengan --no-wait, output menyertakan nama tugas yang akan dipantau. Misalnya:

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.

Melalui kubectl

Untuk menyediakan ulang dengan kubectl, buat sumber daya kustom. Untuk membuat sumber daya kustom untuk provisi ulang, Anda dapat membuat file .yaml dengan struktur ini:

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

Untuk menggunakan contoh yang sama seperti di atas, mySqlinstance replika 2, payloadnya adalah:

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

Memantau atau menghapus tugas

Setelah yaml diterapkan melalui kubectl apply, Anda dapat memantau atau menghapus tugas melalui 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

Penting

Setelah replika diprovisikan ulang, Anda harus menghapus tugas sebelum provisi ulang lain dapat berjalan pada instans yang sama. Untuk informasi selengkapnya, lihat Batasan.

Pembatasan

  • Tugas menolak upaya untuk memprovisi ulang replika utama saat ini. Jika replika utama saat ini rusak dan membutuhkan provisi ulang, failover ke replika yang berbeda, lalu minta provisi ulang.

  • Provisi ulang beberapa replika dalam instans yang sama berjalan secara serial. Antrean tugas dan ditahan dalam Creating status hingga tugas yang saat ini aktif selesai dan dihapus. Tidak ada pembersihan otomatis tugas yang selesai, sehingga serialisasi ini akan memengaruhi Anda bahkan jika Anda menjalankan az sql mi-arc reprovision-replica perintah secara sinkron dan menunggunya selesai sebelum meminta provisi ulang lain. Dalam semua kasus, Anda harus menghapus tugas melalui kubectl sebelum provisi ulang lain pada instans yang sama dapat berjalan.

Detail selengkapnya tentang serialisasi tugas provisi ulang: Jika Anda memiliki beberapa permintaan untuk memprovisikan ulang replika dalam satu instans, Anda mungkin melihat sesuatu seperti ini dalam output dari 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

Entri terakhir untuk replika c-sql-kkncursza-1, sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035, akan tetap dalam status Creating sampai yang sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132 selesai dihapus.