Database Mirroring Database Mirroring (DM), veritabanının çökme veya süreklili ğ inin aksaması durumlarında ikinci bir kopya üzerinden işlemlere devam edilmesini sa ğ layan mekanizmadır Donanımsal bozukluk, elektrik kesintisi, insan kaynaklı hatalar gibi durumlarda sunucu üzerindeki VT erişilemez hale gelebilir. Böyle bir durumda ikinci bir sunucuda bulunan VT devreye girecek ve kullanıcılar hissetmeden sistem çalışmaya devam edecektir Böyle bir sistemin düzgün çalışabilmesi için bu iki VT birbirlerine Database Mirroring ile senkronize edilirler.
Database Mirroring DM’nin anlaşılabilmesi için aşa ğ ıdaki kavramların bilinmesi gerekir: ◦ Principal: aktif olarak kullanılan birincil veritabanına verilen addır. ◦ Mirror: Yedek sunucu üzerinde bulunan veritabanının rolüdür ◦ Witness: Ana ve yedek sunuculara ba ğ lı üçüncü bir sunucudur. Bu sunucu, aktif sunucuda herhangi bir kesinti anında yedek sunucunun devreye girmesini sa ğ lar. E ğ er geçişler manuel yapılacaksa, bu üçüncü sunucu kullanılmayabilir ◦ Failover: Problem oldu ğ undan di ğ er sunucuya geçmek manasında kullanılan terimdir.
Database Mirroring DM’nin sa ğ lıklı çalıştırılabilmesi için: ◦ Her iki sunucuda da SQL Server’ın aynı versiyon kurulu olması gerekmektedir. ◦ Principal, FULL Recovery Mode’da oluşturulmalıdır ◦ SQL Server sürümü 2005 SP1 ve üstü olmalıdır ◦ MS SQL Server Express versiyonlarında DM çalıştırılamaz
Database Mirroring DM, VT’leri eşitlerken üç farklı modda çalışabilmektedir: ◦ High performance (asynchronous): Birinci sunucuda yapılan de ğ işiklikler ikinci sunucuya anında yansımaz. De ğ işiklikler asenkron olarak ikinci ayrı bir işlemle yapılır ◦ High safety without automatic failover (synchronous): Birinci sunucuda yapılan de ğ işiklikler anında ikinci sunucuya da uygulanır. Bu yüzden birinci sunucuda işlem yapan istemci, ikinci sunucudaki işlemin de bitmesini beklemek zorunda kalır. Sunucular arası geçiş elle yapılır. ◦ High safety with automatic failover (synchronous): İ kinci seçenek ile aynıdır. Bu üçüncü seçenekte witness sunucu oldu ğ undan dolayı problem oldu ğ unda yedek sunucuya otomatik geçiş yapılır.
Database Mirroring “ticaret” isimli örnek bir VT’de, DM’nin gerçekleştirilmesi için sırasıyla şu aşa ğ ıdaki adımlar takip edilir 1.Aktif sunucuda “ticaret” isimli bir VT, Recovery Mode = FULL olarak oluşturulur 2.Eşitleme yapılacak olan bu VT’nin ikinci sunucuda da aynı şekilde oluşturulması gerekir. Bunun için 1.Birinci VT’nin bir tam yede ğ i alınır (Ör: c:\VT\ticaret.bak) 2.Birinci VT’nin “Transaction Log”unun yede ğ i alınır (Ör: c:\VT\ticaret_trans_log.bak)
Database Mirroring (Bir önceki sayfadan devam…) 3. İ kinci sunucuya taşınan ticaret.bak ve ticaret_trans_log.bak dosyaları, bu sunucuda sırasıyla Restore edilir Restore işlemi sırasında önce veritabanı dosyası, İ kinci olarak da, transaction log restore edilir Her iki işlemde de, Restore ekranının “Options” kısmında NORECOVERY seçene ğ i seçilir. Bu seçenek ikinci veritabanının dışarıdan başka kullanıcılar tarafından erişilmesini engeller (Sadece mirroring yoluyla erişilebilir olur)
Database Mirroring (Bir önceki sayfadan devam…) 4.Birinci sunucudaki VT’nin Properties ekranında, sol tarafta Mirroring seçilerek, DM sihirbazı seçilir ve gerekli ayarlamalar yapılarak DM aktif hale getirilir 5.Herşey yolunda giderse Birinci sunucudaki VT’nin yanında (Principal, synchronized) İ kinci sunucudaki VT’nin yanında (Restoring…) veya (Mirror, synchronized) yazar
Database Mirroring (Adım 1) Birinci VT’nin ve Transaction Log’un tam yedek alınması
Database Mirroring (Adım 1) Recovery mode ve Backup type “FULL” olmak zorunda Yedek dosyasının kayıt yeri
Database Mirroring (Adım 1) Şimdi aynı işlemi “Transaction log”un yedeklenmesi için yapalım, bu sefer yedek dosyasının adı “ticaret_trans_log.bak” olacak
Database Mirroring (Adım 1) Yedek türü “Transaction log” Yedek dosyasının kayıt yeri ikinci farklı bir dosya…
Database Mirroring (Adım 2) Principal sunucu (ticaret VT var) İkinci sunucuya da bağlanıp, alınan yedeğin oraya geri yüklenerek (Restore), her iki sunucuda da aynı VT’nin oluşturulması gerekmektedir Mirror olarak kullanılacak sunucu (Henüz ticaret VT yok; Restore ile eklenecek)
Database Mirroring (Adım 2) İkinci sunucuya da bağlanıp, alınan yedeğin oraya geri yüklenerek (Restore), her iki sunucuda da aynı VT’nin oluşturulması gerekmektedir
Database Mirroring (Adım 2) Daha önce yedeklenen ticaret.bak dosyası seçilir Ve ikinci adım olarak “Options” kısmına geçilir
Database Mirroring (Adım 2) “Options” ekranında “RESTORE WITH NORECOVERY” seçilir ve “OK” tuşuna basılarak yedekten geri yükleme tamamlanır
Database Mirroring (Adım 2) Benzer şekilde “Transaction log” da yedekten geri yüklenir. Bunun için artık görünür halde olan VT’nin “Tasks -> Restore” menüsü kullanılır
Database Mirroring (Adım 2) 1.“General” sekmesinde yüklenecek dosya “ticaret_trans_log.bak” seçilir 2.“Options” ekranında “RESTORE WITH NORECOVERY” seçilir ve “OK” tuşuna basılarak yedekten geri yükleme tamamlanır
Database Mirroring (Adım 3) Her iki sunucuda da aynı özellikli ve adlı “ticaret” VT oluşturulmuştur Bu aşamada DM artık aktif hale getirilebilir Bunun için aktif (principal) sunucudaki ticaret VT’e sa ğ click -> Properties ekranı açılır Gelen ekranda soldan “Mirroring” seçilir
Database Mirroring (Adım 3) Buraya tıklayarak DM ayarlanır DM henüz aktif değil mesajı…
Database Mirroring (Adım 3) Sorulacak ilk soru “Witness” sunucu kullanılıp kullanılmayacağıdır. Verilecek yanıta göre bizden 2 veya 3 sunucu adı istenecektir. Kolay olması açısından soruya “No” diyoruz
Database Mirroring (Adım 3) 1. Sunucu (Principal) seçimi
Database Mirroring (Adım 3) 2. Sunucu (Mirror) seçimi
Database Mirroring (Adım 3) Her iki sunucu için ayrı ayrı yetkili bir kullanıcı adı verilmelidir. DM mekanizması bu kullanıcıları kullanarak işlem yapacaktır.
Database Mirroring (Adım 3) Sonuç Ekranı: İşlem Başarılı
Database Mirroring (Adım 3) Mirroring hemen başlatılsın mı sorusu işlem tamamlanınca size sorulacaktır
Database Mirroring (Adım 3) Operation mode (ikincisi seçilmiş) DM şu an aktif
Database Mirroring (Adım 3) Bu ekrandayken bazı dü ğ melere basılarak, istenen görevler gerçekleştirilir ◦ Pause: DM’i geçici olarak durdurur ◦ Remove Mirroring: DM’i kaldırır ◦ Failover: Principal ve Mirror sunucular arası manuel de ğ işim yapar. Yani ikinci sunucu aktif, birinci sunucu pasif (mirror) olur. Bu işlem genelde birinci sunucuda bir problem oldu ğ unda yapılır.
Database Mirroring (Adım 3) İ şlem başarılı bir şekilde tamamlanmış ve DM aktif ise, VT’ler şu şekilde görünür
Database Mirroring Bu durumdaki iki VT artık senkron durumdadır. Principal üzerindeki de ğ işiklikler otomatik olarak Mirror VT’e de yansıtılır. Principal çöktü ğ ünde ◦ Witness varsa, otomatik olarak ◦ Witness yoksa, “Failover” dü ğ mesine basarak yedek VT’i devreye sokabilmekteyiz. Uygulamalar ba ğ lantı yaparken bu durumu gözönünde tutarlarsa çöküntüden hiç etkilenmeden sorunsuz bir şekilde VT e erişebilirler
Database Mirroring DM, MS SQL Server’in yüksek erişilebilirlik (high availability) çözümlerinden birisidir. DM kullanılmadı ğ ı zaman alternatif olarak şu aşa ğ ıdaki metotlar da kullanılabilmektedir. 1.Cluster failover 2.Replication 3.Transaction log shipping