SQL Server Always On Yapısında Felaketten Kurtarma (Failover-Failback) Nasıl Yapılır?
SQL Felaket Kurtarma Nedir?
Microsoft SQL Server felaket kurtarma konusunda geçmişten bugüne birçok çözüm üretmiş ve bunları başarılı bir şekilde uygulamıştır. Felaket kurtarma senaryoları (Disaster Recovery) çalışan sistemlere ve gereksinimlere göre farklı anlamlar içerir. Fakat genel olarak bahsettiğimiz konu deprem, sel, yangın ve benzeri durumlarda ana sistem, sistem odası veya fiziksel elemanların çalışamaz durumda kaldığı zamanlarda başka bir lokasyondan sistemlerin çalışırlığını sağlamaktır.
SQL tarafında yüksek erişilebilirlik ve felaketten kurtarma senaryoları ve kurgulanması konusunda değişik makalelerden yararlanabilirsiniz.
Bu makalemde altyapı kurulması ve kurgulanması konusuna değinmeden kurduğum test ortamını anlatacağım ve bu test ortamında felaket durumunu kurgulayıp yapılması gerekenleri aktarmaya çalışacağım.
Test Ortamı;
Resim-1
Öncelikle resimden de anlaşılacağı gibi test ortamımızda Hybrid bir yapı kullanmayı tercih ettim.
Yüksek erişilebilirlik senaryosunda ortak Storage ve SQL 2016 Cluster, felaketten kurtarma senaryosunda da bu Cluster’a bağlı tek bir sunucu, ve bu iki SQL Instance arasında SQL Always On özelliğini aktif ettim.
Quorum olarak disk Quorum ve SQL versiyon olarak SQL 2016 ENT kuruldu.
Resim-2
SRV2 ve SRV3 yüksek erişilebilir olarak konfigüre edilmiş makinalardır Bu kurulum klasik SQL Aktif Pasif Failover Cluster kurulumu. SRV 4 ise felaketten kurtarma makinasıdır ve bulunduğumuz binadan farklı uzak bir lokasyonda bulunmaktadır.
Resim-3
SQL Servisleri ve HA1 (High Availability Group) SRV3 üzerinde çalışmaktadır.
Resim-4
HA1 grupta 4 adet Veritabanı bulunmaktadır ve bu Veritabanları SRV4 makinasına Asenkron olarak replike edilmektedir.
SQL Felaket Durumu ve Alınacak Aksiyonlar (Disaster Recovery) – Failover
Normal bir günde her şey çalışmaktayken ve siz de odanızda oturmuş kahvenizi yudumlarken bir anda elektrik arızası oluştuğunu düşünelim ve tüm sistem odasının ışıkları sönmüş olduğunu farz edelim. Edindiğiniz bilgilere göre mevcut problem 1 hafta boyunca düzeltilemeyecek. SRV2 ve SRV3 makinalarına ulaşamıyorsunuz. Quorum diski de aktif olmadığından Cluster elemanlarınızdan %75 i pasif durumda.
Dolayısı ile Windows Cluster devreden çıkmış ve Failover Cluster ekranına SRV4 makinasından ulaşamıyorsunuz.
Resim-5
Bu noktada yapılması gereken şey SRV4 makinasında Windows Failover Cluster elemanlarını Quorum’suz çalışmaya zorlamanız olacaktır.
Bunun için SRV 4 makinasına bağlanmalı ve POWERSHELL kullanarak aşağıdaki komutları girmelisiniz.
Import-Module FailoverClusters
$node = “SRV4”
Stop-ClusterNode –Name $node
Start-ClusterNode –Name $node -FixQuorum
(Get-ClusterNode $node).NodeWeight = 1
$nodes = Get-ClusterNode -Cluster $node
$nodes | Format-Table -property NodeName, State, NodeWeight
Komutlardan da anlaşılacağı gibi önce gerekli modülün import edilmesi gerekmektedir. Sonrasında Cluster servisi durdurulur ve tekrar Quorum’suz çalışması zorlanmalıdır.
Bu işlemlerin ardından aktif olan tek Cluster Node’unun SRV4 olduğu bilgisi Windows Cluster iletilir.
Aynı işlemleri net.exe yardımı ile komut satırı üzerinden de yapılabilir.
net.exe stop clussvc
net.exe start clussvc /forcequorum
Komutlar için : https://msdn.microsoft.com/en-us/library/hh270275.aspx
Yapılan bu işlemlerin ardından Windows Failover Cluster arayüzünü açabilir durumdadır.
Resim-6
Şimdi yapılması gereken ise Veritabanlarını yani HA1 grubu SRV 4 makinasına aktarmak olacaktır. Bu işlem için SRV4 makinasındaki SQL Instance’a bağlanıp gruba Failover demek yeterli olacaktır.
Resim-7
HA1 SRV4 makinasına asenkron konfigürasyon olduğundan veri kaybı konusunda bir uyarı görülür. Bu durumda ne kadar veri kaybı olacağı sistemin aktif yoğunluğu ve aradaki network hattının iyiliği parametrelerine göre değişiklik gösterecektir.
Resim-8
Artık SRV4 makinasından çalışabilir durumdayız ve görüldüğü üzere Veritabanları DR tarafında çalışır durumda.
Aktif Sisteme Geri Dönme (DC) – FailBack
Evet 1 hafta boyunca DR tarafında çalıştınız ve sistem odanız artık hazır. Şimdi DC tarafına geri dönmeden önce yapılması gerekenleri inceleyelim.
Öncelikle bu bir kontrollü aksiyon olduğundan veri kaybı artık istemediğimiz bir şey.
Resim-9
Aktif olan sistemde Veritabanlarının data aktarımının Suspend olduğunu fark edilecektir. Bunları tek tek Resume etmek gereklidir.
Resim-11
Sonrasında ise sonra tüm sistemler kontrol edilmeli ve en önemlisi geçiş öncesi iki Instance arasındaki veri aktarım yöntemi senkron olarak ayarlanmalıdır.
Resim-12
Son adımdada artık herşeyin düzgün olarak ayarlandığından emin olunduktan sonra DC ortamına geri dönülebilir.
Bir sonraki makalede görüşmek üzere.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
https://msdn.microsoft.com/en-us/library/hh270275.aspx
TAGs : sql server, sql server cluster, sql server cluster seçenekleri, sql server nedir, sql server high Availability, sql server disaster recovery, sql server yüksek erişilebilirlik secenekleri, sql server cluster secenekleri, sql server failover, sql server failback, sql server always on, sql server always on ayarlari, sql server always on yapilandirma, sql server always on kurulumu, sql server alwason nedir, sql server always on ilk ayarlar