Mengonfigurasi kebijakan failover otomatis yang fleksibel untuk grup ketersediaan AlwaysOn

Berlaku untuk:SQL Server di Windows

Topik ini menjelaskan cara mengonfigurasi kebijakan failover fleksibel untuk grup ketersediaan AlwaysOn dengan menggunakan Transact-SQL atau PowerShell di SQL Server. Kebijakan failover yang fleksibel memberikan kontrol terperinci atas kondisi yang menyebabkan failover otomatis untuk grup ketersediaan. Dengan mengubah kondisi kegagalan yang memicu failover otomatis dan frekuensi pemeriksaan kesehatan, Anda dapat meningkatkan atau mengurangi kemungkinan failover otomatis untuk mendukung SLA Anda untuk ketersediaan tinggi.

Kebijakan failover fleksibel pada kelompok ketersediaan ditentukan oleh tingkat kondisi kegagalan dan ambang batas waktu tunggu pemeriksaan kesehatan. Saat terdeteksi bahwa grup ketersediaan telah melampaui tingkat kondisi kegagalannya atau ambang batas waktu pemeriksaan kesehatannya, DLL sumber daya grup ketersediaan memberikan respons kepada kluster Windows Server Failover Clustering (WSFC). Kluster WSFC kemudian memulai failover otomatis ke replika sekunder.

Catatan

Kebijakan failover fleksibel dari grup ketersediaan tidak dapat dikonfigurasi dengan menggunakan SQL Server Management Studio.

Batasan pada Failover Otomatis

  • Agar failover otomatis dapat terjadi, replika utama saat ini dan satu replika sekunder harus dikonfigurasi untuk mode ketersediaan sinkron-commit dengan failover otomatis, dan replika sekunder harus disinkronkan dengan replika utama.

  • SQL Server 2019 (15.x) meningkatkan jumlah maksimum replika sinkron menjadi 5, naik dari 3 di SQL Server 2017 (14.x). Anda dapat mengonfigurasi grup lima replika ini untuk memiliki failover otomatis dalam grup. Ada satu replika utama, ditambah empat replika sekunder sinkron.

  • Jika grup ketersediaan melebihi ambang kegagalan WSFC-nya, kluster WSFC tidak akan mencoba melakukan failover otomatis pada grup ketersediaan. Selain itu, grup sumber daya WSFC milik grup ketersediaan tetap dalam status gagal hingga administrator kluster secara manual mengembalikan grup sumber daya yang gagal ke status online atau administrator database melakukan failover manual pada grup ketersediaan. Ambang kegagalan WSFC didefinisikan sebagai jumlah maksimum kegagalan yang dapat didukung untuk grup ketersediaan dalam periode waktu tertentu. Periode waktu default adalah enam jam, dan nilai default untuk jumlah maksimum kegagalan selama periode ini adalah n-1, di mana n adalah jumlah simpul WSFC. Untuk mengubah nilai ambang kegagalan untuk grup ketersediaan tertentu, gunakan Konsol Manajer Failover WSFC.

Prasyarat

  • Anda harus terhubung ke instans server yang menghosting replika utama.

Izin

Tugas Izin
Untuk mengonfigurasi kebijakan failover fleksibel untuk grup ketersediaan baru Memerlukan keanggotaan dalam peran server tetap sysadmin serta salah satu dari izin server CREATE AVAILABILITY GROUP, izin ALTER ANY AVAILABILITY GROUP, atau izin CONTROL SERVER.
Untuk mengubah kebijakan grup ketersediaan yang ada Memerlukan izin ALTER AVAILABILITY GROUP pada grup ketersediaan, izin CONTROL AVAILABILITY GROUP, izin ALTER ANY AVAILABILITY GROUP, atau izin CONTROL SERVER.

Ambang Batas Waktu Pemeriksaan Kesehatan

DLL sumber daya WSFC dari grup ketersediaan melakukan pemeriksaan kesehatan replika utama dengan memanggil prosedur tersimpan sp_server_diagnostics pada instans SQL Server yang menghosting replika utama. sp_server_diagnostics mengembalikan hasil pada interval yang sama dengan 1/3 dari ambang batas waktu pemeriksaan kesehatan untuk grup ketersediaan. Ambang batas waktu pemeriksaan kesehatan default adalah 30 detik, yang menyebabkan sp_server_diagnostics kembali pada interval 10 detik. Jika sp_server_diagnostics lambat atau tidak mengembalikan informasi, DLL sumber daya akan menunggu interval penuh ambang batas waktu pemeriksaan kesehatan sebelum menentukan bahwa replika utama tidak responsif. Jika replika utama tidak merespons, failover otomatis dipicu, jika fitur ini saat ini didukung.

Penting

sp_server_diagnostics tidak melakukan pemeriksaan kesehatan di tingkat database.

Tingkat Kondisi Gagal

Apakah data diagnostik dan informasi status kesehatan yang dikembalikan oleh sp_server_diagnostics memerlukan failover otomatis bergantung pada tingkat kondisi kegagalan grup ketersediaan. Tingkat kondisi kegagalan menetapkan kondisi kegagalan mana yang memicu failover otomatis. Ada lima tingkat kondisi kegagalan, yang berkisar dari yang paling tidak ketat (tingkat satu) hingga yang paling ketat (tingkat lima). Tingkat tertentu mencakup tingkat yang kurang ketat. Dengan demikian, tingkat yang paling ketat, lima, termasuk empat kondisi yang kurang ketat, dan sebagainya.

Penting

Database yang rusak dan database tersangka tidak terdeteksi oleh tingkat kondisi kegagalan apa pun. Oleh karena itu, database yang rusak atau dicurigai (baik karena kegagalan perangkat keras, kerusakan data, atau masalah lainnya) tidak pernah memicu failover otomatis.

Tabel berikut ini menjelaskan kondisi kegagalan yang sesuai dengan setiap tingkat.

Tingkat Kondisi kegagalan Nilai T-SQL Nilai PowerShell
Satu Server sedang tidak aktif. Menentukan bahwa failover otomatis dimulai ketika salah satu hal berikut terjadi:

Layanan SQL Server tidak berfungsi.

Masa berlaku lease grup ketersediaan untuk terhubung ke kluster WSFC berakhir karena tidak ada ACK yang diterima dari instans server. Untuk informasi selengkapnya, lihat Cara Kerja: Batas Waktu Lease SQL Server Always On.



Ini adalah tingkat yang paling tidak ketat.
1 OnServerDown
Dua Server tidak merespons. Menentukan bahwa failover otomatis dimulai ketika salah satu hal berikut ini terjadi:

Instans SQL Server tidak terhubung ke kluster, dan batas waktu pemeriksaan kesehatan grup ketersediaan yang ditentukan pengguna telah terlampaui.

Replika ketersediaan berada dalam status gagal.
2 OnServerUnresponsive
Tiga Saat terjadi kesalahan server kritis. Menetapkan bahwa pengalihan otomatis dipicu saat terjadi kesalahan internal SQL Server yang kritis, seperti spinlock yatim, pelanggaran akses tulis yang serius, atau terlalu banyak dump memori yang dihasilkan dalam waktu singkat.

Ini adalah tingkat default.
3 OnCriticalServerError
Empat Pada kesalahan server tingkat sedang. Menentukan bahwa failover otomatis dipicu saat terjadi kesalahan internal SQL Server tingkat sedang, seperti kondisi kehabisan memori yang persisten di kumpulan sumber daya internal SQL Server. 4 OnModerateServerError
Lima Pada kondisi kegagalan yang memenuhi kriteria. Menentukan bahwa pengalihan otomatis dipicu saat terjadi kondisi kegagalan yang memenuhi syarat, termasuk:

Deteksi kebuntuan pada Scheduler.

Deteksi kebuntuan yang belum terkelola.



Ini adalah tingkat yang paling ketat.
5 Pada Kondisi Kegagalan Memenuhi Kualifikasi

Catatan

Kurangnya respons oleh instans SQL Server terhadap permintaan klien tidak relevan dengan grup ketersediaan.

Menggunakan T-SQL

Untuk mengonfigurasi kebijakan failover yang fleksibel

  1. Sambungkan ke instans server yang menghosting replika utama.

  2. Untuk grup ketersediaan baru, gunakan CREATE AVAILABILITY GROUP pernyataanTransact-SQL. Jika Anda memodifikasi grup ketersediaan yang sudah ada, gunakan ALTER AVAILABILITY GROUP pernyataanTransact-SQL.

    • Untuk mengatur tingkat kondisi failover, gunakan opsi FAILURE_CONDITION_LEVEL = n , di mana, n adalah bilangan bulat dari 1 hingga 5.

      Misalnya, pernyataan Transact-SQL berikut mengubah tingkat kondisi kegagalan dari grup ketersediaan yang ada, AG1, ke tingkat satu:

      
      ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);  
      

      Hubungan nilai bilangan bulat ini dengan tingkat kondisi kegagalan adalah sebagai berikut:

      Nilai T-SQL Tingkat Otomatis failover dimulai ketika...
      1 Satu Server sedang down. Layanan SQL Server berhenti karena failover atau mulai ulang.
      2 Dua Server tidak merespons. Setiap kondisi nilai yang lebih rendah terpenuhi, layanan SQL Server terhubung ke kluster dan ambang batas waktu pemeriksaan kesehatan terlampaui, atau replika utama saat ini dalam keadaan gagal.
      3 Tiga Saat terjadi kesalahan server kritis. Kondisi apa pun dengan nilai yang lebih rendah terpenuhi atau terjadi kesalahan kritis server internal.

      Ini adalah tingkat default.
      4 Empat Pada kesalahan server tingkat sedang. Kondisi dengan nilai lebih rendah terpenuhi atau terjadi kesalahan Server tingkat sedang.
      5 Lima Pada kondisi kegagalan yang memenuhi kriteria. Kondisi apa pun dengan nilai yang lebih rendah terpenuhi atau kondisi kegagalan yang memenuhi kriteria terjadi.

      Untuk informasi selengkapnya tentang tingkat kondisi failover, lihat Kebijakan Failover Fleksibel untuk Failover Otomatis Grup Ketersediaan (SQL Server).

    • Untuk mengonfigurasi ambang batas waktu pemeriksaan kesehatan, gunakan opsi HEALTH_CHECK_TIMEOUT = n , di mana, n adalah bilangan bulat dari 15000 milidetik (15 detik) hingga 4294967295 milidetik. Nilai defaultnya adalah 30000 milidetik (30 detik)

      Misalnya, pernyataan Transact-SQL berikut mengubah ambang batas waktu pemeriksaan kesehatan dari grup ketersediaan yang ada, AG1, menjadi 60.000 milidetik (satu menit).

      
      ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);  
      

Menggunakan PowerShell

Untuk mengonfigurasi kebijakan failover yang fleksibel

  1. Atur default (cd) ke instans server yang menghosting replika utama.

  2. Saat menambahkan replika ketersediaan ke grup ketersediaan, gunakan cmdlet New-SqlAvailabilityGroup . Saat memodifikasi replika ketersediaan yang ada, gunakan cmdlet Set-SqlAvailabilityGroup .

    • Untuk menetapkan tingkat kondisi failover, gunakan parameter FailureConditionLevellevel, dengan level berupa salah satu nilai berikut:

      Nilai Tingkat Otomatis failover dimulai ketika...
      OnServerDown Satu Server sedang down. Layanan SQL Server berhenti karena failover atau mulai ulang.
      OnServerUnresponsive Dua Server tidak merespons. Setiap kondisi nilai yang lebih rendah terpenuhi, layanan SQL Server terhubung ke kluster dan ambang batas waktu pemeriksaan kesehatan terlampaui, atau replika utama saat ini dalam keadaan gagal.
      OnCriticalServerError Tiga Saat terjadi kesalahan server kritis. Kondisi apa pun dengan nilai yang lebih rendah terpenuhi atau terjadi kesalahan server internal yang kritis.

      Ini adalah tingkat default.
      OnModerateServerError Empat Pada kesalahan server tingkat sedang. Kondisi apa pun dengan nilai yang lebih rendah terpenuhi atau terjadi kesalahan Server tingkat sedang.
      Pada Kondisi Kegagalan Memenuhi Kualifikasi Lima Pada kondisi kegagalan yang memenuhi kriteria. Kondisi apa pun dengan nilai yang lebih rendah terpenuhi atau kondisi kegagalan yang memenuhi kriteria terjadi.

      Untuk informasi selengkapnya tentang tingkat kondisi failover, lihat Kebijakan Failover Fleksibel untuk Failover Otomatis Grup Ketersediaan (SQL Server).

      Misalnya, perintah berikut mengubah tingkat kondisi kegagalan dari grup ketersediaan yang ada, AG1, ke tingkat satu.

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg `   
      -FailureConditionLevel OnServerDown  
      
    • Untuk mengatur ambang batas waktu pemeriksaan kesehatan, gunakan parameter HealthCheckTimeoutn, di mana, n adalah bilangan bulat dari 15000 milidetik (15 detik) untuk 4294967295 milidetik. Nilai defaultnya adalah 30000 milidetik (30 detik).

      Misalnya, perintah berikut mengubah ambang batas waktu pemeriksaan kesehatan dari grup ketersediaan yang ada, AG1, menjadi 120.000 milidetik (dua menit).

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAG `   
      -HealthCheckTimeout 120000  
      

Catatan

Untuk melihat sintaks cmdlet, gunakan cmdlet Get-Help di lingkungan PowerShell SQL Server. Untuk informasi selengkapnya, lihat Mendapatkan Bantuan SQL Server PowerShell.

Untuk menyiapkan dan menggunakan penyedia PowerShell SQL Server

Tugas Terkait

Untuk mengonfigurasi failover otomatis

Konten Terkait

Lihat Juga

Gambaran Umum Grup Ketersediaan AlwaysOn (SQL Server)
Mode Ketersediaan (Grup Ketersediaan AlwaysOn)
Mode Failover dan Failover (Grup Ketersediaan AlwaysOn)
Klaster Failover Windows Server (WSFC) dengan SQL Server
Kebijakan Failover untuk Instans Kluster Failover
sp_server_diagnostics (T-SQL)