Policy-Based Management(Always ON Veritabanları Failover’a Hazır mı-Availability Database Facet)
Policy-Based Management SQL Server 2008 ile gelen bir özelliktir. Sistemlerimizde istediğimiz kuralları koymamıza, standartlarımızı belirlememize ve kontrollerimizi otomatik olarak yapmamıza olanak sağlar. Örneğin stored procedure’lerimizin isimlerinin rakam ile başlamaması ya da veritabanı recovery modellerinin simple olmaması için kontrol amaçlı olarak policy oluşturabiliriz.
Policy Based Management(PBM)’ı kavramak için bazı kavramları anlamanız gerekir.
Facet: PBM tarafından yönetilebilen bir özelliktir. Örneğin Availability Database isminde bir facet vardır. Ve bu facet’ı kullanarak availability group’ların failover’a hazır olup olmadığını kontrol eden bir policy oluşturabilirsiniz.
Tüm facet’ların listesine aşağıdaki gibi SSMS üzerinden erişebilirsiniz. Facet detayı için üzerine çift tıklamalısınız.
Condition: ilgili facet’ların alt özelliklerinin belirlenen koşulu sağlayıp sağlamadığını kontrol eder. Örneğin Availability Database facet’ının IsFailoverReady alt özelliğinin True olup olmadığını kontrol eden bir condition oluşturabilirsiniz. Böylelikle herhangi bir availability group’un failover olmasını engelleyebilecek bir unsur(replikasyonun durması gibi) varsa policy fail edecektir. Bu şekilde soruna zamanında müdahale etme şansını bulabilirsiniz.
Bahsettiğimiz gibi bir policy oluşturalım.
Aşağıdaki gibi Management > Policy Management > Policies sekmelerinden New Policy diyoruz.
Karşımıza çıkan ekranda Policy’e bir isim veriyoruz ve Check Condition kısmından bir condition oluşturmamız gerekiyor.
New Condition’a tıklıyoruz.
Karşımıza çıkan ekranda Name kısmından condition’a bir isim veriyoruz.
Facet kısmından AG’lerin failover’a hazır olup olmadığını kontrol edeceğimiz için Availability Database facet’ını seçiyoruz.
Expression kısmında … ‘ya tıklayarak Availability Database facet’ının alt özelliği olan @IsFailoverReady ‘i seçiyoruz.
Operator kısmından =’i , value kısmından da True’yu seçiyoruz. Böylelikle AG failover’a hazır değilse policy fail edecektir.
Evaluation Mode kısmından On Schedule’ı seçerek policy hangi aralıklarla kontrol’ü yapacağını belirliyoruz ve daha sonra Enable kutucuğuna tıklıyoruz.
On Demand’ı seçersek, sadece policy’i çalıştırdığımızda kontrolleri yapar.
Server restriction kısmında server bazında bir koşulunuz varsa server bazında bir condition oluşturarak koşulunuzun kontrolünü yapabilirsiniz.
Belirli aralıklarla otomatik kontrol etmesini istiyorsak Schedule kısmından new diyoruz ve policy’nin kontrol’ü yapacağı sıklığı belirliyoruz. Biz aşağıda her gün 00:00:000’da bir kere çalışacak şekilde set ettik.
Policy’mizi bu şekilde oluşturduk. Manual olarak çalıştırmak için aşağıdaki gibi Evaluate diyoruz.
Kendi lokal’imde Always On olmadığı için aşağıdaki gibi bir sonuç aldım. Eğer Always On kurulu olsaydı daha uzun bir liste olacaktı. Fail eden AG olması durumunda da Detail kısmında View şeklinde bir link çıkacaktı. Bu linke tıkladığınızda sorunun nedenini görebilirsiniz.
Availability Database Facet’ını kullanarak kontrol edebileceğiniz diğer parametreleri aşağıda görebilirsiniz.
Policy Based Management ile SQL Server üzerinde yapabileceğiniz bir çok kontrol vardır. Ve profesyonel bir veritabanı yöneticisi bence SQL Server’ın bize sunduğu bu özelliği bütün detaylarıyla kullanmalı. Policy Based Management ile yapabileceğiniz diğer kontrolleri sitemizdeki menüden MSSQL’in altındaki POLICY-BASED MANAGEMENT alt menüsünden erişebileceğiniz makalelerde bulabilirsiniz.