Failover manual yang dimulai pengguna pada SQL Managed Instance

Berlaku untuk:Azure SQL Managed Instance

Artikel ini menjelaskan cara melakukan failover secara manual pada node utama pada tingkat layanan SQL Managed Instance General Purpose (GP) dan Business Critical (BC), dan cara melakukan failover secara manual pada simpul replika baca-saja sekunder pada tingkat layanan BC saja.

Catatan

Artikel ini tidak terkait dengan failover lintas wilayah dengan grup failover.

Kapan menggunakan failover manual

Ketersediaan tinggi adalah bagian mendasar dari platform SQL Managed Instance yang bekerja secara transparan untuk aplikasi database Anda. Failovers dari node primer ke sekunder jika terjadi degradasi node atau deteksi kesalahan, atau selama pembaruan perangkat lunak bulanan reguler adalah kejadian yang diharapkan untuk semua aplikasi menggunakan SQL Managed Instance di Azure.

Anda mungkin mempertimbangkan untuk menjalankan failover manual pada SQL Managed Instance karena beberapa alasan berikut:

  • Uji aplikasi untuk ketahanan failover sebelum menyebarkan ke produksi
  • Uji sistem end-to-end untuk ketahanan kesalahan pada failover otomatis
  • Menguji bagaimana failover memengaruhi sesi database yang ada
  • Verifikasi apakah failover mengubah performa end-to-end karena perubahan latensi jaringan
  • Dalam beberapa kasus penurunan performa kueri, failover manual dapat membantu mengurangi masalah performa.

Catatan

Memastikan bahwa aplikasi Anda tangguh failover sebelum menyebarkan ke produksi membantu mengurangi risiko kesalahan aplikasi dalam produksi dan berkontribusi pada ketersediaan aplikasi bagi pelanggan Anda. Pelajari selengkapnya tentang menguji aplikasi Anda untuk kesiapan cloud dengan Menguji Kesiapan App Cloud untuk Ketahanan Failover dengan perekaman video SQL Managed Instance .

Memulai failover manual pada SQL Managed Instance

Izin Azure RBAC diperlukan

Pengguna yang memulai failover harus memiliki salah satu peran Azure berikut:

  • Peran Pemilik Langganan, atau
  • Peran Kontributor SQL Managed Instance, atau
  • Peran kustom dengan izin berikut:
    • Microsoft.Sql/managedInstances/failover/action

Menggunakan PowerShell

Versi minimum Az.Sql harus v2.9.0. Pertimbangkan untuk menggunakan Azure Cloud Shell dari portal Azure yang selalu memiliki versi PowerShell terbaru yang tersedia.

Sebagai pra-persyaratan, gunakan skrip PowerShell berikut untuk menginstal modul Azure yang diperlukan. Selain itu, pilih langganan tempat SQL Managed Instance yang ingin Anda failover berada.

$subscription = 'enter your subscription ID here'
Install-Module -Name Az
Import-Module Az.Accounts
Import-Module Az.Sql

Connect-AzAccount
Select-AzSubscription -SubscriptionId $subscription

Gunakan perintah PowerShell Invoke-AzSqlInstanceFailover dengan contoh berikut untuk memulai failover node utama, berlaku untuk tingkat layanan BC dan GP.

$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName

Gunakan perintah PowerShell berikut untuk failover membaca simpul sekunder, hanya berlaku untuk tingkat layanan BC.

$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName -ReadableSecondary

Menggunakan CLI

Pastikan untuk menginstal skrip CLI terbaru.

Gunakan perintah CLI az sql mi failover dengan contoh berikut untuk memulai failover node primer, yang berlaku untuk tingkat layanan BC dan GP.

az sql mi failover -g myresourcegroup -n myinstancename

Gunakan perintah CLI berikut untuk failover read secondary node, berlaku untuk tingkat layanan BC saja.

az sql mi failover -g myresourcegroup -n myinstancename --replica-type ReadableSecondary

Menggunakan REST API

Untuk pengguna tingkat lanjut yang mungkin perlu mengotomatiskan failover SQL Managed Instances mereka untuk tujuan menerapkan pipeline pengujian berkelanjutan, atau mitigator performa otomatis, fungsi ini dapat dicapai melalui memulai failover melalui panggilan API. Lihat SQL Managed Instances - Failover REST API untuk detailnya.

Untuk memulai failover menggunakan panggilan REST API, pertama-tama hasilkan Auth Token menggunakan API client pilihan Anda. Token autentikasi yang dihasilkan digunakan sebagai properti Otorisasi di header permintaan API dan wajib.

Kode berikut adalah contoh API URI yang akan dipanggil:

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/failover?api-version=2019-06-01-preview

Properti berikut harus diteruskan dalam panggilan API:

Properti API Parameter
subscriptionId ID langganan tempat instans terkelola digunakan
resourceGroupName Grup sumber daya yang berisi instans terkelola
managedInstanceName Nama instans terkelola
replicaType (Opsional) (Primer atau ReadableSecondary). Parameter ini menunjukkan jenis replika yang gagal di atas: primer atau sekunder yang dapat dibaca. Jika tidak ditentukan, failover dimulai pada replika utama secara default.
versi-api Nilai statis dan saat ini harus "pratinjau 2019-06-01"

API merespons dengan salah satu dari dua berikut:

  • 202 Diterima
  • Salah satu dari 400 kesalahan permintaan.

Status operasi dapat dilacak melalui meninjau respons API di header respons. Untuk informasi selengkapnya, lihat Status operasi Azure asinkron.

Memantau failover

Untuk memantau kemajuan failover yang dimulai pengguna untuk instans BC Anda, jalankan kueri T-SQL berikut di klien favorit Anda (seperti SSMS) pada SQL Managed Instance. Ini membaca tampilan sistem sys.dm_hadr_fabric_replica_states dan melaporkan replika yang tersedia pada instans. Refresh kueri yang sama setelah memulai failover manual.

SELECT DISTINCT replication_endpoint_url, fabric_replica_role_desc FROM sys.dm_hadr_fabric_replica_states

Sebelum memulai failover, output Anda menunjukkan replika utama saat ini pada tingkat layanan BC yang berisi satu primer dan tiga sekunder dalam Grup Ketersediaan AlwaysOn. Setelah eksekusi failover, menjalankan kueri ini lagi perlu menunjukkan perubahan node utama.

Anda tidak akan dapat melihat output yang sama dengan tingkat layanan GP seperti yang ditunjukkan di atas untuk SM. Ini karena tingkat layanan GP didasarkan pada satu node saja. Anda dapat menggunakan kueri T-SQL alternatif yang menunjukkan waktu proses SQL dimulai pada node untuk instans tingkat layanan GP:

SELECT sqlserver_start_time, sqlserver_start_time_ms_ticks FROM sys.dm_os_sys_info

Hilangnya konektivitas singkat dari klien Anda selama failover, biasanya berlangsung di bawah satu menit, adalah indikasi eksekusi failover terlepas dari tingkat layanan.

Catatan

Penyelesaian proses failover (bukan ketidaksediaan singkat yang sebenarnya) mungkin memakan waktu beberapa menit sekaligus jika terjadi beban kerja intensitas tinggi. Ini karena mesin instans mengurus semua transaksi saat ini di primer dan mengejar ketinggalan pada node sekunder, sebelum gagal.

Penting

Batasan fungsional failover manual yang dimulai pengguna adalah:

  • Mungkin ada satu (1) failover yang dimulai pada SQL Managed Instance yang sama setiap 15 menit.
  • Untuk instans BC harus ada kuorum replika agar permintaan failover diterima.
  • Untuk instans BC tidak dimungkinkan untuk menentukan replika sekunder yang dapat dibaca untuk memulai failover.
  • Failover tidak akan diizinkan sampai pencadangan penuh pertama untuk database baru diselesaikan oleh sistem pencadangan otomatis.
  • Failover tidak akan diizinkan jika ada pemulihan database yang sedang berlangsung.

Langkah berikutnya