Mengonfigurasi kebijakan failover otomatis yang fleksibel untuk grup ketersediaan AlwaysOn

Berlaku untuk:SQL Server - Khusus Windows

Topik ini menjelaskan cara mengonfigurasi kebijakan failover yang 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 dari grup ketersediaan ditentukan oleh tingkat kondisi kegagalan dan ambang batas waktu pemeriksaan kesehatan. Pada mendeteksi bahwa grup ketersediaan telah melebihi tingkat kondisi kegagalannya atau ambang batas waktu pemeriksaan kesehatannya, DLL sumber daya grup ketersediaan merespons kembali 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 terjadi, replika utama saat ini dan satu replika sekunder harus dikonfigurasi untuk mode ketersediaan penerapan sinkron 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 dalam 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 failover otomatis untuk grup ketersediaan. Selain itu, grup sumber daya WSFC dari grup ketersediaan tetap dalam keadaan gagal sampai administrator kluster secara manual membawa grup sumber daya yang gagal secara online atau administrator database melakukan failover manual dari grup ketersediaan. Ambang kegagalan WSFC didefinisikan sebagai jumlah maksimum kegagalan yang didukung untuk grup ketersediaan selama 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 yang fleksibel untuk grup ketersediaan baru Memerlukan keanggotaan dalam peran server tetap sysadmin dan izin server CREATE AVAILABILITY GROUP, MENGUBAH izin GRUP KETERSEDIAAN APA PUN, atau izin SERVER KONTROL.
Untuk mengubah kebijakan grup ketersediaan yang ada Memerlukan izin UBAH GRUP KETERSEDIAAN pada grup ketersediaan, izin GRUP KETERSEDIAAN KONTROL, izin UBAH GRUP KETERSEDIAAN APA PUN, atau izin SERVER KONTROL.

Ambang Batas Waktu Health-Check

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 responsif, failover otomatis dimulai, jika saat ini didukung.

Penting

sp_server_diagnostics tidak melakukan pemeriksaan kesehatan di tingkat database.

Tingkat Kondisi Kegagalan

Apakah data diagnostik dan informasi kesehatan yang dikembalikan oleh sp_server_diagnostics menjamin failover otomatis tergantung pada tingkat kondisi kegagalan grup ketersediaan. Tingkat kondisi kegagalan menentukan kondisi kegagalan apa 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 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 tingkatan.

Tingkat Kondisi kegagalan Nilai T-SQL Nilai PowerShell
Satu Di server tidak berfungsi. Menentukan bahwa failover otomatis dimulai ketika salah satu hal berikut ini terjadi:

Layanan SQL Server tidak berfungsi.

Sewa grup ketersediaan untuk menyambungkan ke kluster WSFC kedaluwarsa karena tidak ada ACK yang diterima dari instans server. Untuk informasi selengkapnya, lihat Cara Kerjanya: SQL Server Batas Waktu Sewa AlwaysOn.



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

Instans SQL Server tidak tersambung ke kluster, dan ambang batas waktu pemeriksaan kesehatan yang ditentukan pengguna dari grup ketersediaan terlampaui.

Replika ketersediaan dalam status gagal.
2 OnServerUnresponsive
Tiga Pada kesalahan server kritis. Menentukan bahwa failover otomatis dimulai pada kesalahan internal SQL Server kritis, seperti spinlock tanpa sumber, pelanggaran akses tulis serius, atau terlalu banyak cadangan memori yang dihasilkan dalam waktu singkat.

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

Deteksi kebuntuan Scheduler.

Deteksi kebuntuan yang belum terkelola.



Ini adalah tingkat yang paling ketat.
5 OnAnyQualifiedFailureConditions

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 pernyataan CREATE AVAILABILITY GROUPTransact-SQL. Jika Anda memodifikasi grup ketersediaan yang ada, gunakan pernyataan ALTER AVAILABILITY GROUPTransact-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 Di server tidak berfungsi. Layanan SQL Server berhenti karena failover atau mulai ulang.
      2 Dua Pada server tidak responsif. 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 Pada kesalahan server kritis. Setiap kondisi nilai yang lebih rendah terpenuhi atau terjadi kesalahan server penting internal.

      Ini adalah tingkat default.
      4 Empat Pada kesalahan server sedang. Setiap kondisi nilai yang lebih rendah terpenuhi atau terjadi kesalahan Server sedang.
      5 Lima Pada kondisi kegagalan yang memenuhi syarat. Setiap kondisi nilai yang lebih rendah terpenuhi atau kondisi kegagalan yang memenuhi syarat 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 mengatur tingkat kondisi failover, gunakan parameter tingkatFailureConditionLevel, di mana, level adalah salah satu nilai berikut:

      Nilai Tingkat Otomatis failover dimulai ketika...
      OnServerDown Satu Di server tidak berfungsi. Layanan SQL Server berhenti karena failover atau mulai ulang.
      OnServerUnresponsive Dua Pada server tidak responsif. 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 Pada kesalahan server kritis. Setiap kondisi nilai yang lebih rendah terpenuhi atau terjadi kesalahan server penting internal.

      Ini adalah tingkat default.
      OnModerateServerError Empat Pada kesalahan server sedang. Setiap kondisi nilai yang lebih rendah terpenuhi atau terjadi kesalahan Server sedang.
      OnAnyQualifiedFailureConditions Lima Pada kondisi kegagalan yang memenuhi syarat. Setiap kondisi nilai yang lebih rendah terpenuhi atau kondisi kegagalan yang memenuhi syarat 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, , AG1ke 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) hingga 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 SQL Server PowerShell. 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)
Pengklusteran Failover Windows Server (WSFC) dengan SQL Server
Kebijakan Failover untuk Instans Kluster Failover
sp_server_diagnostics (T-SQL)