İçeriğe geç
Anasayfa » SQLServer – Alwyas on (Database Level Health Detection)

SQLServer – Alwyas on (Database Level Health Detection)

Selamlar ,

Bugünki yazımda her dba’nin karşısına çıkan ve always on yapısı olan ortamlarda AG’nin propertisinden gördüğümüz bu seçeneğin ne işe yaradığını ve hangi durumlarda kullanmamız gerektiğine bir açıklık getirmeye çalışacağım.

Database Level Health Detection (DB Level Health Detection) Nedir?

Kısaca açıklayacak olursak SQL Server Always On Availability Groups içinde veritabanı bazında sağlık kontrolü (health detection) yapılmasını sağlayan bir özelliktir. Peki bizim ne işimize yarar 🙂 ? avantaj ve dezavantajları nelerdir bunlara deyinelim

Ne İşe Yarar?

Normalde Always On Availability Groups, sunucu (instance) seviyesinde sağlık kontrolü yapar.
Ancak, eğer yalnızca belirli bir veritabanında sorun oluşursa, bu tek başına failover tetiklenmez. Eğer herhangi bir veritabanımda suspect,offline,recovery pending gibi durumlarda failover tetiklenmesini istiyorsak bu özelliği aktif hale getirmeliyiz.

Database Level Health Detection aktifse:

  • Sadece bir veritabanında hata oluşursa bile otomatik failover tetiklenir.
  • Failover süresi kısalır çünkü SQL Server, genel instance seviyesini beklemeden doğrudan veritabanı hatasına yanıt verir.

DB Level Health Detection kapalıysa:

  • Bir veritabanında hata oluşsa bile, SQL Server tüm instance’ın çökmesini bekler ve bu bazen failover’ın gecikmesine neden olabilir.

🛠 Ne Tür Hataları Algılar?

Database Level Health Detection, yalnızca veritabanı ile ilgili kritik hataları tespit eder, örneğin:

Veritabanının Suspect Mode’a düşmesi
Transaction Log’un bozulması
Checkpoint başarısızlığı
Veritabanının “Recovery Pending” moduna geçmesi
Veritabanı bağlantısının kopması veya çökmesi

Ancak burda dikkat etmemiz gereken bir husus var yukarıda’da bahsettiğim gibi bağlantı hataları veya kullanıcı bazlı hatalar failover’a neden olmaz. Sadece DB özelindeki crash durumlarında failover’ın tetiklenmesini sağlar.

Bu özelliği açmak için aşağıdaki komutu çalıştırabilir veya yukarıdaki ekran görüntüsünde bulunan checkbox’ı checklyebilirsiniz.

ALTER AVAILABILITY GROUP [AG_Adi]  
SET (DB_FAILOVER = ON);

Bu özelliği açıp açmamaya gelecek olursak ;

Bence bu özellik yararlı olmasına karşın gereksiz failover durumlarına sebep olabilir ve secondary node’larda eğer server seviyesindeki loginler joblar gibi objeler taşınmamışsa büyük bi iş yükü çıkartabilir. Kullanılmamalı diyemiyorum fakat tümüyle best practice yapısına uygun bir yapınız var ise ve gerçekten bakımları periyodik olarak yapılıyor ve izleniyor ise kesinlikle bu özellik kullanılmalı aksi taktirde bakıma zaman harcayamıyorsanız veya SQLServer tarafında çalışan bir DBA’niz yok ise bu özelliği kullanmak çok da sağlıklı olmayabilir. Bunun yanında bu özelliği kullanmak için otomotik ve senkron olarak kullanmanız gerekiyor diyorum ve kararı sizlere bırakıyorum 🙂

Umarım Faydalı Bir yazı olmuştur. Bir sonraki yazıda görüşmek üzere 🙂 …..

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir