SQL Server

SQL Server 2014 Database Mirroring Adım Adım Kurulum ve Temel Yapılandırma

SQL server 1989 yılınan beri hayatımızda olan ve Microsoft’ un en değerli ürün ailesinden birini oluşturmaktadır.  Özellikle 2008 sürümünden sonra çok hızlı bir gelişim göstererek rakiplerine oranlar ciddi pazar payı kazanımı sağlamak ile beraber hangi büyüklükte olur ise olsun iş yüklerinin altından kalkmayı başarmaktadır.

 

Yıl

Sürüm Adı

1989

SQL Server 1.0

1991

SQL Server 1.1

1993

SQL Server 4.21

1995

SQL Server 6.0

1996

SQL Server 6.5

1998

SQL Server 7.0

1999

SQL Server 7.0

2000

SQL Server 2000

2003

SQL Server 2000

2005

SQL Server 2005

2008

SQL Server 2008

2010

SQL Azure

2010

SQL Server 2008 R2

2012

SQL Server 2012

2014

SQL Server 2014

Biz makalemizde SQL 2014 serveri konu alacağımız için makalemizi SQL Server 2014 kapsamında genişleterek ele alacağız. Sql Server 2014 kullanılma ortamlarına göre aşağıdaki sürümler ile hayatımıza girdi.

Enterprise

Business Intelligence

Standard

Web

Developer

Express

 

Sql Server 2014 Lisanslama politikası da aşağıdaki gibidir.

SQL 2014 Versiyonları

Lisanslama Modelleri

Lisanslama Türleri

Enterprise

Per Core

Volume Licensing, Hosting

Business Intelligence

Server + CAL

Volume Licensing, Hosting

Standard

Per Core, Server + CAL

Volume Licensing, Retail, Hosting

Developer

Per User Fee

Volume Licensing, Retail

Web

SPLA

Hosting

Express

Free

Free

 

Sql 2014 Yüksek erişilebilirlik yapısı da aşağıdaki gibi farklı senaryolar içermektedir.

AlwaysOn Availability

Database Mirroring

 Log Shipping

 

Bu genel bilgilerden sonra Sql Mirroring yapısını detaylandırabiliriz. Biraz uzun soluklu bir anlatım olacak ama burada amaç bu işi bilmeyen birinin bu işi tamamıyla kavraması yönünde.

Sql mirroring yapısı aşağıdaki şekilde işlemektedir. Bu yapıda bir tane sunucumuzda aktif veritabanı çalışmakta ve ikinci bir sunucuya bu veritabanımız kendini senkronize etmektedir. Aktif veritabanından bir sorun olması durumunda Witness sunucumuz bunu algılamakta ve pasifte bekleyen veritabanına yönelerek yapıda bir süreklilik sağlamaktadır. Genel yapıyı özetledikten sonra daha da detaya girebiliriz.

clip_image002

Öncelikle Sql Mirroring yapısında kullanılan terimleri ele alalım. Makalemiz bu terimler üzerinden ilerleyecek olduğu için bu terimleri kavramamız önem taşımaktadır.

Sql Miroring : Felaketten kurtarma, iş  sürekliliği sağlamak adına Microsoft firması tarafından SQL Veritabanı Sunucuları için geliştirilmiş yüksek erişilebilirlik çözümlerinden bir tanesidir. SQL Server 2005 sp1 ile hayatımıza giren bu çözüm sonraki SQL Server versiyonları olan SQL Server 2008, SQL Server 2012 versiyonları tarafından da desteklenmektedir. Bu yapıdaki amaç bir veritabanının iki farklı sunucuda kopyası oluşturularak, mevcut aktif sunucunun herhangi bir nedenden dolayı servis verememesi, devre dışı kalması ya da veritabanının bozulması durumunda yedek sunucu üzerinde bulunan veritabanı ile erişimin ve servisin aynen devam ettirilmesidir.

Principal : Aktif olarak hizmet veren kaynak veritabanının tutulduğu sunucudur. Kaynak sunucu. Bu sunucu üzerinde bulunan veritabanının kendisi de kaynak veritabanı veya principal database olarak isimlendirilir.

Mirror : Kaynak veritabanının kopyasının oluşturulduğu yedek sunucudur. Bu sunucu üzerinde oluşan veritabanı da kopya veritabanı, yedek veritabanı veya mirror database olarak adlandırılır.

Witness : Principal ve Mirror sunucuları sürekli izleyerek bir kesinti olayı gerçekleşmesi durumunda otomatik olarak rollerin değiştirilmesi görevini yapar. Farklı bir tabirle database mirroring çözümünde ana sunucuda oluşabilecek bir kesinti durumunda yedek sunucuyu ana sunucu konumuna getirip manuel bir müdahaleye gereksinim olmadan sistemin aksamadan yürümesini sağlar. Witness sunucu kullanmak isteğe bağlıdır. Eğer otomatik geçiş istenmiyor veya buna bir sunucu ayrılamıyor ise kesintilerde rol geçişini manuel yapılacağı durumlarda tercih edilir.

Database Mirroring yapısna geçiş yapmadan önce dikkat edilmesi gerekenler;

          Database Mirroring yapısına geçiş için karar verilecek olunursa Sql Server versiyonları minimum SQL 2005 SP1 olmalıdır.

          Sql Server Sunucularının kurulu oldukları işletim sistemleri farklı olabilir. (Örn: Server 2008, Server 2012)

          Sql server kurulu olan işletim sistemleri 32 bit veya farklı olarak 64 bit olabilir.

          Principall ve mirror sunucuları aynı versiyon ve sürümde olmaları zorundadır.(Enterprise, Standart)

          Database Mirroring Enterperise ve Standart versiyonlar tarafından desteklenmektedir.

          Witness sunucusu ise Sql 2005 SP1 üzeri bir sql versiyonu olabilir. Express Edition bile kullanılabilir.

 

Artık ufaktan yapımızın kurulumuna geçebiliriz. Ben test ortamımı aşağıdaki şekilde kurdum.

Server

Rol

Versiyon

Dc

Witness

Sql 2014 Standart

SQLSERVER1

Principal

Sql 2014 Standart

SQLSERVER2

Mirror

Sql 2014 Standart

 

Yapımızda aşağıdaki gibidir. Test ortamım için tamamen sanal sistemimi kullanacağım.

clip_image004

Domain Controller sunucum aşağıda olduğu gibi görünmektedir. Bu DC olan sunucumda Witness rolünü barındıracağım.

clip_image006

SQLSERVER1 ve SQLSERVER2 sunucularımda ise Principal ve Mirroring sunucularımı barındıracağım. Bu gerekli ortam tanıtımından sonra artık ufak ufak adımlarımıza geçelim.

clip_image008

Öncelikle 3 sunucumuza da SQL Server 2014 Standart kurulumunu yapıyor olacağım. Ben bir sunucumda kurulumu anlatacağım. 3 sunucu üzerinde aynı işlemler yapılacağı için bu adımları 3 sunucu üzerinde tekrarlamanız gerekmektedir. Önceki zamanlarda Sql Server 2012 kurulum makalesi paylaştığım için bu adımları kısaca resim olarak gerektiği yerde açıklayarak geçeceğim. Sql Server 2012 kurulum makaleme aşağıdaki link üzerinden erişim sağlayabilirsiniz. SQL Server 2014 kurulum olarak aynı şekilde kurulmaktadır.

http://www.cozumpark.com/blogs/sql/archive/2013/04/07/sql-server-2012-kurulumu.aspx

SQL Server 2014 kurulum medyamızdan Setup.exe dosyasını çalıştıralım.

clip_image010

Karşımıza gelen kurulum ekranında ortamımıza yeni bir SQL Server kuracağımız için “New SQL Server standalone installation or add features to an existing installation” seçeneğini seçelim.

clip_image012

Ben test ortamı için kurulum yapacağımdan dolayı “Evaluation” seçeneğini seçip ilerliyorum. Siz kurulumuzu yaparken burada gerekli sürümü seçer sürümün gereksinimine göre key girerek veya girmeyerek bir sonraki ekrana ilerleyebilirsiniz.

clip_image014

Lisans anlaşmasını kabul edip bir sonraki adıma ilerleyelim.

clip_image016

Gerekli güncellemeleri kurulum öncesinde denetlettirebiliriz. Tabi bu sizin seçiminize kalmış ben bu şekilde bir sonraki adıma ilerliyorum.

clip_image018

Kurulum için gerekli sistem denetlemesi yapıldı. İleride portlar noktasında sorun olabilir diye Firewall uyarı verdi. Biz bu adımı ayrıca ele alacağımız için bir sonraki ekrana ilerliyoruz.

clip_image020

Biz tüm özellikleri eklemeyeceğimiz ve Share Point ortamı için SQL Server kurmayacağımız için yeni bir SQL Server kurulumu yapacağımız için “SQL Server Feature Installation” seçeneğini seçerek bir sonraki ekrana ilerliyoruz.

clip_image022

Bu ekranımızda gerekli rolleri seçiyoruz. Aşağıdaki seçimleri yapmamız bizim için yeterli. Geri kalan özellekler bizim senaryomuzda bize lazım değil boş yere zaman ve sistem kaynaklarını kaybetmemek için bu adımları geçiyoruz.”Management Tools-Complete” kesinlikle kurulmalıdır. Mirroring yapılandırması bu toolun kurulumu ile aktif olmaktadır.

clip_image024

Kurulum için gerekli olan Feature’lar denetlendiğinde .NET Framework 3.5’un kurulu olmadığı görünüyor öncelikle bu Feature’ı kurmamız gerekiyor.

clip_image026

Server manager konsolunu açarak “Add roles and features” linkine tıklayalım.

clip_image028

Gelen ekranı geçerek sonraki ekrana ilerleyelim.

clip_image030

“Role – based or feature-based installation” seçimi ile sonraki ekranımıza ilerleyelim.

clip_image032

Bu sunucumuza gerekli olan .NET özelliğini kuracağımız için zaten diğer ortamdaki sunucularımızda eklenmediği için mevcut sunucumuzu seçerek ilerleyelim.

clip_image034

Biz rol kurulumu yapmayacağımız için bir sonraki ekrana ilerleyelim.

clip_image036

Karşımıza gelen Feature ekleme ekranından .NET Framework 3.5 Features seçimini yaparak bir sonraki ekranımıza ilerleyelim.

clip_image038

Sihirbaz bize yapılacak olan işlemler noktasında bir özet sundu. Install butonu ile özelliğimizin kurulması adımını başlatalım.

clip_image040

Kurulum tamamlandı “Close” ile adımımızı bitirip SQL Server 2014 kurulum ekranımıza geri dönelim.

clip_image042

SQL Server 2014 kurulum adımımızda karşımıza çıkan sorunu aştık ve sonraki adıma ilerledik. Burada bir instance ismi belirleyebilir veya var olan ile ilerleyebiliriz. Ben var olan isimle bir sonraki ekranımıza ilerliyorum.

clip_image044

Karşımıza Server Configuration ekranı geldi. Service Accounts tabında SQL Server 2012 Servislerini çalıştıracak kullanıcı hesapları belirlenir. Bu servis seçimlerini aşağıdaki gibi bırakabilirsiniz. İlerleyen makale serilerimizde yapacağımız bazı örnekler ile bu kısımlara zaten yer vermek durumunda kalacağız. 

clip_image046

Collation tabından SQL Server dil ve karakter set ayarlarını “SQL_Latin1_General_CP1_CI_AS” olarak seçip bir sonraki ekrana ilerleyelim.

clip_image048

Biz yapımızda şu anda “Windows authencation mode” seçimini yapacağız. Bu metot ile kimlik doğrulaması yaptığım için Windows kullanıcılarından bir tanesini seçmem gerekmekte. Kurulumu Administrator hesabı ile yaptığımız için “Add Currnet User” seçimini yaparak Administrator kullanıcısının otomatik eklenmesini sağlayabiliriz.

clip_image050

Biz Database Mirroing yapılandırması yapacağımız için Gerekli SQL Server Directory’lerini belirlerken iki tarafta da aynı yolları göstermek durumundayız. Bu nedenle ben SQL Directory yapılandırmasında farklı bir disk yapısı kullanmadığım için tüm sistem yapısını varsayılan değerde bırakıp bir sonraki ekrana ilerliyorum.

clip_image052

Sihirbaz bize yapılacak olan işlemlerin bir özetini getirdi. Bu ayarları Configuration file path birimine bir dosya olarak atacak. Biz Install ile kurulumu başlatalım.

clip_image054

Kurulum işlemleri başladı.

clip_image056

Kurulum tamamlandı ve hatasız olarak tüm işlevler başarı ile tamamlandı.

clip_image058

Sql servislerimiz sorunsuz olarak konsola eklenmiş ve instance’ımıza ait olan SQL Server (MSSQLSERVER)” rolü “running” olarak çalışır durumda.

clip_image060

Kısa yollarımız sorunsuzca oluşturuldu. “SQL Server 2014 Management Studio” ekranını açabiliriz.

clip_image062

Mixed mode olarak kurulum yaptığımız için ve kurulumu ADMINISTRATOR hesabı ile yaptığımız için “Connect” butonu ile yönetim konsolumuzun açılmasını sağlayabiliriz.

clip_image064

Konsolumuz sorunsuzca açıldı. Bizim buraya kadar olan SQL Server 2014 kurulum adımlarını geriye kalan 2 sunucumuz üzerinde de yapmamız gerekmektedir.

clip_image066

Geri kalan 2 sunucumuzda da SQL Server 2014 kurulumlarını tamamladıktan sonra 3 sunucumuzda 1433 numaralı porta izin vermemiz gerekmektedir.

clip_image068

3 sunucumuzda kurulum tamamlandıktan sonra ve 3 sunucumuzda 1433 numralı portmuza firewall üzerinden izin verdiğimizde diğer sunucularımız üzerinde bulunan SQL Server 2014 sunucularımızı SQL Server Management Studio üzerine ekleyebilir ve erişebilir duruma geldik.

Resmimizde görüldüğü gibi Witness, Principal ve Mirror sunucularımız konsolumuza eklendi ve Mirroring yapılandırmasına hazır durumda.

clip_image070

SQLSERVER1 sunucum üzerinde “RIZASAHAN” isminde bir veritabanı oluşturdum. Bu veritabanımda “MUSTERILER” isminde bir tablo oluşturdum ve içerisine birkaç kayıt girdim.

clip_image072

Database Mirroring yapacağımız veritabanımızın özelliklerine girelim. Daha önce SQL sunucusu kurulan yapıda Database Mirroring yapılacak ise veritabanı “Recovery Model yapısı Full“olarak ayarlanmak zorundadır. Biz sıfırdan bir veritabanı oluşturduğumuz için zaten özelliğini Full olarak ayarladık.

clip_image074

Veritabanımız üzerinde Mirroring özelliği bulunmakta fakat aktif edilmemiş durumdadır.

clip_image076

Veritabanımızın full recovery modelinde olup olmadığını kontrol ettikten sonra Database Mirroring özelliğini aktif edebilmemiz için Principal sunucumuz üzerindeki veritabanının yedeğini almamız gerekmektedir. Bu nedenle veritabanımız üzerinde sağ tuş yaparak TaskàBack Up.. menülerine tıklayalım.

clip_image078

Karşımıza gelen ekranda Backup Type olarak Full seçiliyken yedek almak için “OK” butonuna tıklayalım.

clip_image080

Yedeğimizin başarı ile alındığı mesajını “OK” ile geçelim.

clip_image082

Full olarak veritabanımızı yedekledikten sonra birde Transaction log backup olarak yedek almamız gerekmektedir. Bu işlem için yine veritabanımız üzerinde sağ tuş TaskàBack Up… menüsüne tıklayalım.

clip_image084

Backup Type seçeneğini Transaction log backup olarak seçip “OK” ile yedeği başlatalım.

clip_image086

Yedeğimiz başarı ile tamamlandı uyarısını yine “OK” butonuna tıklayarak kapatalım.

clip_image088

Öncelikle full yedeğimiz alınmış durumda ve üzerine Transaction yedeğimizde eklenmiş durumda. Yedek dizinimize baktığımızda yedeklerimizin tek bir dosyaya sorunsuzca alındığını görebilmekteyiz.

clip_image090

Evet buraya kadar olan adımlarımızı tamamlayarak Database Mirroring için gerekli olan zorunlu adımları tamamladık. Principal sunucumuz üzerinde şimdilik işlemimiz bitti. Şimdi Mirror sunucumuza geçip işlemlerimize devam edebiliriz. Mirror sunucumuzda Principal sunucu üzerinde yedeği alınan veritabanının geri dönülme işlemi yapılması gerekmektedir. Mirror sunucumuzda Database üzerinde sağ tıklayarak “Restore Database…” menüsüne tıklayalım.

clip_image092

Yedeğimizin yolunu göstermek için “…” butonuna tıklayalım.

clip_image094

Açılan ekranda “Add” butonuna tıklayalım.

clip_image096

Yedeğimizi seçip “OK” butonuna tıklayalım.

clip_image098

Yedeğimiz eklendi “OK” butonuna tıklayalım.

clip_image100

Yedeğimizin içinde iki adet yedek barındığı için “Companent” sütununda bu yedeğin Database Full ve Log Transaction yedek barındırdığını görebiliyoruz. Biz ilk seçenek olan Database Full yedeğimizi seçelim ve ek ayarlar için “Option” kısmına gelelim.

clip_image102

Yedeğimizin dönüş özelliğini “RESTORE WITH NORECOVERY” mod olarak seçmemiz gerekiyor. Bu işlemden sonra “OK” ile restore işlemini başlatalım.

clip_image104

RIZASAHAN veritabanı yedeğimiz SQLSERVER2 sunucumuz üzerine başarılı şekilde restore edildi.

clip_image105

Bu durum SQLSERVER2 sunucumuz üzerinde aşağıdaki gibi görünmektedir.

clip_image107

Şimdi SQLSERVER1 üzerinden alınan yedeğimizi SQLSERVER2 Sql sunucumuz üzerinde döndüğümüze göre geri kalan adımlara ilerleyebiliriz. Full yedeği döndükten sonra birde bu yedeğin üzerinde Transaction Log yedeğini dönmemiz gerekmektedir. Bu nedenle Restore ettiğimiz veritabanı üzerinde yarım kalan adımımızı tamamlamak için sağ tuş TaskàRestoreàTransaction Log.. menüsüne tıklayalım.

clip_image109

Yedeğimizin yolunu göstermek için “…” butonuna tıklayalım.

clip_image111

Açılan ekranda “Add” butonuna tıklayalım.

clip_image112

Yedeğimizi seçip “OK” butonuna tıklayalım.

clip_image113

Yedeğimiz eklendi “OK” butonuna tıklayalım.

clip_image114

Yedeğimizin içinde RIZASAHAN veritabanına ait olan Full Database yedekleme ekranımıza eklendi. Biz “Option” kısmına gelelim.

clip_image116

Bu yedeğimizi de yine (RESTORE WITH NORECOVERY) modda döneceğimiz için aşağıdaki ekranda gözüktüğü gibi bir seçim yapalım ve “OK” tuşuna tıklayalım.

clip_image118

Transaction Log Yedeğimiz “RIZASAHAN” veritabanı üzerine başarı ile dönüldü.

clip_image120

Buraya kadar olan adımları tamamladıktan sonra Database Mirror özelliğini faaliyete geçirmek için 5022 portunu da 3 sunucumuzda açmamız gerekmektedir.

clip_image122

Bu kadar ön bilgi ve hazırlıktan sonra Database Mirror özelliğini aktif edebilir hale geldik. J Şimdi Principal sunucumuz üzerinde yer alan RIZASAHAN veritabanına sağ tıklayarak “TaskàMirror” butonuna tıklayalım.

clip_image124

Sarı alanda görüldüğü gibi Mirroring yapımız konfigüre edilmemiş durumda. “Configure Securtiy…” butonumuza tıklayarak konfigürasyon adımlarını başlatalım.

clip_image126

Bize genel bilgi veren sihirbaz ekranını geçerek bir sonraki ekrana ilerleyelim.

clip_image127

Bu ekranımızda Witness sunucumuzun güvenliğinin konfigüre edilip edilmeyeceği sorulmaktadır. Makalemizin başında da belirttiğimiz gibi Witness kullanılması zorunlu değildir. İşlemlerimizi otomatikleştirir. Biz gerekli masrafı yapmak istemiyor veya mirroring geçişini manuel yapmak istiyorsak Witness kullanmak zorunda değiliz. Makalemizde Witness kullanacağımız için bu ekrandaki soruyu YES seçeneği ile geçerek sonraki ekranımıza ilerliyoruz.

clip_image128

Yapılandıracağımız rolleri seçip ilerlememiz gerekiyor. SQL Database Mirroring senaryomuzda Pricipal ve Mirror zorunlu olduğundan bunların seçimine müdahale edemiyoruz. Bu ekranda yine Witness serveri iptal etme hakkımız var ama biz Witness yapılandırmasını yapacağız. Şunu da belirtmekte yarar var Witness ortama sonradan dahil edilebilir.

clip_image130

Mirror sunucumuzu seçiyoruz. Port olarak ise 5022 portunu seçiyoruz. Buradaki instance serverler tek SQL server üzerinde olsa farklı portlar kullanmamız gerekecekti. Bizim SQL serverlerimiz ayrı ayrı kurulduğu için yapılandırmadaki Mirror ve Witness sunucularda yine 5022 portunu kullanabiliriz. Bir sonraki ekranımıza ilerliyoruz.

clip_image132

Bizden Mirroring sunucusunu göstermemiz istenmektedir. Kendisi otomatik olarak SQLSERVER2 serverini seçti. Biz bunu seçmeyip farklı sunucu seçebilirdik fakat bu serveri seçeceğimiz için bu kısma dokunmuyoruz. Bu nedenle bu server’imize bağlantı sağlamamız gerekmektedir. Bu nedenle Connect butonumuza tıklayalım.

clip_image133

Gelen ekranda Authencation tipimize göre login olmamız gerekmektedir. SQLSERVER sunucularımın tamamını Mixed Mode olarak kurduğum için Administrator hesabı ile bağlantı sağlayacağım için direkt olarak Connect butonuna tıklıyorum

clip_image134

Gerekli check işlemi tamamlandı bağlantı bilgilerimizde sorun olmadığı için SQLSERVER2 sunucumuz mirror konumuna geldi. Port olarak yine yukarıda bahsettiğimiz gibi server’lerimizi ayrı ayrı kurduğumuz için 5022 numaralı portu kullanabiliriz.  Endpoint isimlerini karışıklık olmaması adına Principal server’da Pricipal olarak, Mirror Server’da mirror olarak bırakıp sonraki ekranımıza ilerliyoruz.

clip_image135

Bu ekranımızda bizden Witness Serverimizi tanıtmamız istenmektedir. Witness rolünü barındıracak olan SQL Server’i DC isimli sunucuma kurduğum için seçimi bu şekilde bırakarak Connect… butonuna tıklıyorum. İki önceki ekranımızda olduğu gibi yine bağlantı sağlıyoruz. Yine portumuzu 5022 olarak varsayılan ayarda bırakıp, Endpoint ismini Witness olarak bırakıp sonraki ekrana ilerliyoruz.

clip_image136

Bu ekranımızda bizden  Service Account hesabının bilgileri istenmektedir. Her sunucu için ayrı hesap kullanılabileceği gibi tek bir hesapta kullanılabilir. Ben Mixed Mode olarak kurulum yaptığım için Administrator hesabımı domainismi\hesapismi şeklide yazarak sonraki ekrana ilerliyorum.

clip_image137

Bu ekranımızda yapılacak olan işlemlerin özeti yer almaktadır. Finish ile yapılandırmamızın başlamasını sağlayalım.

clip_image138

Yapılandırmamız 3 sunucumuz içinde başarı ile uygulandı. Close ile bu ekranımızdan çıkalım.

clip_image140

Karşımıza gelen ekranda bize Database Mirroring yapısını start edip etmeyeceğimiz sorulmaktadır. “Start Mirroring” butonu ile tıklayarak Database Mirroring yapısının başlamasını sağlayalım.

clip_image142

Mirroring işlemi başlatılamadı ve aşağıdaki hata ile karşılaştık. Bunun nedeni Database Mirroring işlemini başlatabilmemiz için SQL Server kurulumu sırasında Servis Hesapları kullanmış olmamızdır. Bu nedenle işlemimize başlayabilmek adına Servis hesabı yerine farklı bir hesap ataması yapalım.

clip_image143

Sql Server Configuration Manager üzerinde MSSQL instance üzerinde çift tıklayarak Log On tabında Administrator hesabını gösterelim ve gerekli şifreyi girelim. Apply ve OK butonlarına tıklayarak bu ekranımızdan çıkalım.

clip_image145

Yukarıda yapılan işlemi Witness, Principal ve Mirror sunucularımızın hepsinde yapıyor olmamız gerekmektedir. Bu işlemi yaptıktan sonra Database Mirroring işlemini başlatmak için tekrardan “Start Mirroring” butonumuza tıklayalım.

clip_image147

Bu kez hata almadan Database Mirroring yapımız aktif oldu. Aktif olduktan sonra senkronizasyon işleminin başladığını aşağıdaki kırmızı alanımızda görebilirsiniz.

clip_image149

Artık bu durumda senkronizasyon tamamlandığında veri tabanımıza gelen bilgiler aynı anda iki veri tabanımıza birlikte yazılacaktır. Çalıştırılan bir komut iki tarafa commit edildiğinde görevini yerine getirecektir. Burada minimal düzeyde bir performans sıkıntısı olacaktır.

clip_image150

Database Mirroring yapısının ne durumda olduğunu görebilmek adına SQL Server Management Studio üzerinden durumu monitorize edebilmekteyiz. Bu işlemi yapabilmek için Database Mirroring yapısına kattığımız veritabanımız üzerinden sağ tıklayarak TaskàLaunch Database Mirroring Monitor… menüsüne tıklayalım.

clip_image152

Açılan ekranımızda replikasyon durumunu görebilmek adına Replication monitör menüsünü tıklayalım.

clip_image154

Açılan ekranda monitorize edeceğimiz sunucularımızı eklemek için Register mirrored database linkine tıklayalım.

clip_image156

Öncelikle ekranımızda ilk görülen Mirroring Sunucumuza “Connect” butonuna tıklayarak bağlantı sağlayalım.

clip_image157

Konsolumuza Database Mirroring sunucularımız eklendi. Şu anda senkronizasyon tam olarak tamamlanmadığı için hatalar görmekteyiz. Tam senkronizasyon sağlandığında burada sadece yeşil ikonlar görerek işlerin yoluna girdiğini anlayacağız.

clip_image159

Belirli bir zaman bekledikten sonra, veritabanının büyüklüğü, disk network performansı gibi kriterlere göre senkronizasyon zamanı biraz değişiklik gösterebilmektedir. Şu anda sorunsuz şekilde senkronizasyon tamamlanmış olarak görünüyor. Sunucularımız senkronize bir şekilde işlevlerini sürdürmeye başlamış durumdalar.

clip_image161

Bu durum SQL sunucularımızın olduğu ekranda aşağıdaki şekilde gözlemlenmektedir.

clip_image163

Dilerseniz senkronizasyon sırasında oluşabilecek durumlarda karşımıza çıkan terimlerden kısaca bahsediyor olalım.

Synchronized : Principal sunucu ile mirror sunucu aynı veritabanı kopyasına sahiptir ve senkronize edilecek veri farkı yoktur.

 

Synchronizing : Database mirroring yapısının kurulduğu anda görülen durumdur. Doğal olarak mirror sunucusu principal’in gerisinde kalmıştır ve değişiklikleri kendisine güncellemeye çalışıyor demektir.

 

Suspended : Principal sunucunun mirror sunucuya transaction’ları gönderemediği durumlarda mirroring durum olarak bunu gösterir. Özellikle failover gerçekleşirse bu durum görülür. Ayrıca eğer manuel olarak database mirroring pause edilirse de yine bu durum görülebilir.

 

Pending_Failover : Failover olduğunda ve principal sunucu kendi üzerindeki açık sessionları kapatıp kendisini mirror sunucu olarak ayarladığı anda gözüken durumdur.

 

Disconnected : Mirroring yapısındaki ortakların (principal, mirror vb.) aralarındaki bağlantıyı kaybettikleri zaman oluşan durumdur.

 

Buraya kadar gerçekleşen senaryoda Database Mirroring yapısının ne olduğunu ve nasıl kurgulanacağını anlattık ver gerçekleştirdik. Şimdi birazda testler yapalım ve Mirroring durum ve terimlerini inceleyelim. Database Mirroring ekranımıza girebilmek için veritabanımız üzerinde sağ tılayarak TaskàMirror… menüsüne tıklayalım.

clip_image165

Şu an açılan ekranımızda Pricipal, Mirror ve Witness sunucularımızı görebilmekteyiz. Burada dilersek yukarıda belirttiğimiz gibi Witness sunucumuz olmasaydı “Failover” butonu ile rol değişimini yapabilir principal ve mirror sunucularımıza rol değişimi yaptırabilirdik. Bu durum felaket anından Principal sunucumuzda sorun olması durumunda uygulanabilir.

Pause ile Database mirrorin işlemini geçici süre durdurabiliriz. Bu sunucularda bakım yapılması durumunda geçerli olacak bir durumdur.

Remove Mirroring ise ortamımızdan Database Mirroring yapısını kaldırmak istediğimiz durumda kullanılabilir.

High Performance (Asynchronous):Bu modda öncelikli olarak Principal veritabanına işlem onaylanarak yazılır, sonra da Mirror veritabanına yazar. Biraz açmak gerekir ise Principal veritabanı yapılan transaction sonucunu kendi veritabanına yazmak için mirror veritabanından da eşzamanlı yazma onayı beklemeden hemen kendi üzerine yazar. Dolayısıyla mirror veritabanı, principal veritabanı ile farklı zamanlarda yazma işlevini yerine getirirler, mirror veritabanı principal veritabanını geriden takip eder. Bu modda sadece Principal Server ve Mirror Server rolleri kullanılır, Witness Server rolü kullanılmaz. Principal sunucu ile mirroring sunucu rollerinin değişimi manuel olarak gerçekleştirilir.

 

Yüksek Güvenlikli (High Safety): Bu modda gerçekleştirilen bir transaction principal veritabanına yazılmadan önce mirror veritabanı sunucusuna da aynı transaction bilgisi gönderilerek mirror sunucusundan gelecek transaction onayı beklenir. Mirror veritabanında transaction onaylandığı ve işletildiği bilgisi geldikten sonra principal veritabanı üzerinde o transaction onaylanarak işlevini yerine getirir. Principal veritabanı gerçekleşen transaction işlevinin mirror veritabanına yazılma onayı sonrasında eş zamanlı olarak yazma işlevini yerine getirir. Bu şekilde hem principal hem de mirror eş zamanlı olarak aynı değişikliğe uğradıkları için bu moda biz aynı zamanda Senkron Mod adı verilir. Bu modda herhangi bir şekilde veri farkı ya da kaybı olmadığı için biz bu moda “yüksek güvenlikli (high safety) adı verilir.

 

High Safety without automatic failover (synchronous): Hem principal hem de mirror veritabanlarına eş zamanlı olarak yazılan modudur. Witness Server rolü kullanılmayan çalışma modudur. Bu modda principal sunucusundaki veritabanında sorun olursa mirror sunucudaki veritabanını principal rolüne transfer etme işlemi manuel olarak gerçekleştirilir.

 

Şimdi dilerseniz manuel olarak rol değişimi yapalım. Sunucularımız arasında principal ve mirror rolleri arasında geçiş yapalım. Bu işlem için Failover butonuna tıklayalım.

 

clip_image167

Karşımıza gelen ekrandaki sorumuza YES ile yanıt verelim.

clip_image168

Şu anda aşağıda olduğu gibi rollerimizin değiştiğini görebilmekteyiz. Principal olan SQLSERVER1 sunucumuz Mirror, Mirror olan SQLSERVER2 sunucumuz ise Principal olarak hizmet etmeye başladı.

clip_image170

Bu durumda SQLSERVER2 sunucumuzu bir sorun olduğunu düşünerek kapatalım. Bakalım bir failover durumunda ne olacak?

clip_image172

Biz yukarıdaki test işlemlerimizde SQLSERVER2 sunucusunu principal yapmıştık. Son testimizde SQLSERVER2 sunucumuzu kapattık. Witness rolü sayesinde roller yer değiştirdi. Aşağıdaki durumda gördüğünüz gibi Principal sunucumuz tekrardan SQLSERVER1, mirror sunucumuz ise SQLSERVER2 oldu.

clip_image174

Bu durum SQL sunucularımız üzerinde aşağıdaki şekilde görülmektedir.

clip_image176

SQLSERVER2 sunucumuzu açtığımızda tekrardan otomatik olarak senkronizasyon başlamaktadır.

clip_image178

Şimdi ise farklı bir test yaparak DC olan Witness sunucumuzu kapatalım.

clip_image180

Bu durumda artık ortamda bir failover olması durumunda geçişlere karar verecek olan sunucumuz ortadan kalktı. Bu durumda geçişleri manuel olarak yapmamız gerekmektedir. Witness kapalı olmasına rağmen yapıda bir aksama olmadan hizmet vermeye devam etmektedir. Durum aşağıda gözlemlenmektedir.

clip_image182

Biz senaryomuzu biraz zorlaştırarak principal sunucumuzu da kapatalım. Ortamda sadece Mirror sunucumuzun aktif olarak hizmet verdiğini düşünelim. Şu anda mirror sunucumuzun da Principal sunucumuz ile olan bağlantısı koptu. Bu durum sunucumuza aşağıdaki şekilde yansıdı.

clip_image184

Bu gibi durumlar çok elzem ve büyük bir sorunun olduğuna dair durumlarda meydana gelebilir. Ortamda Witness sunucunun ulaşılmaz olması durumu istenmeyen senaryodur. Buna karşın yine komut ile zorlama metodu ile principal sunucunun rolü almasını sağlayabilmekteyiz.

SQL sunucumuz üzerinden aşağıdaki şekilde bir sorguyu çalıştırmamız gerekmektedir.

ALTER Database RIZASAHAN SET PATNER FORCE_SERVICE_ALLOW_DATA_LOSS

clip_image186

Bu komuttan sonra sunucumuzu Refresh edelim.

clip_image188

Böyle elzem bir senaryoda Witness olmadığı durumda Principal çökse bile mirror sunumuz ayağa kalkmakta ve principal rolünü almaktadır. Durum aşağıdaki gibi gözükmektedir. Veritabanımıza ve tablolarımıza erişim sağlayabilir duruma geldik.

clip_image190

Uzun soluklu makalemizin sonuna geldik. Umarım yararlı olur. Farklı bir makalemizde görüşmek üzere.

Rıza ŞAHAN

www.rizasahan.com

İlgili Makaleler

Bir yanıt yazın

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

Başa dön tuşu