SQL Server Database Mirroring Yapılandırılması

SQL Server da  yüksel erişebilirlik ( High Availability) teknolojilerinden biri olan Database Mirroring veri tabanı seviyesinde yapılan bir uygulamadır.

Bu uygulama sayesinde veri tabanlarımızı yapımızdaki ikinci bir SQL server üzerinde barındırabilir, veritabanı değişikliklerin  sürekli olarak diğer sunucu üzerine replike edilmesini sağlayabilir ve asıl sunucumuzda bir problem çıktığında farklı SQL server dan veri tabanımıza erişmemiz sağlanabilir.

Database Mirroring uygulamasında asıl sunucuya Principal server denir. Principal server ın veri tabanını yedeklediği karşı sunucuya ise Mirror server denmektedir.

Database Mirroring özelliğini kullanmadan önce yapınızda yer alan SQL server lar da bir takım ön gereksinimleri tamamlamanız gerekmektedir. Bunlar:

  • Database Mirroring yapılandırılması yapacak kullanıcı domain ve sql server seviyesinde yönetici olmalıdır.
  • Principal ve Mirror sunucular mutlaka domainde yer almalıdırlar.
  • Her iki sunucuda da sql servis hesapları domain hesaplarına atanmalıdırlar. Aynı hesapları kullanabilirsiniz.
  • İki sunucuda da aynı sürüm SQL server yüklü olmalıdır.
  • İki sunucu arasında 5022 portunu ve sql server ın kullandığı standart portları

 

Ön gereksinimleri tamamladıktan sonra ilk olarak principal olarak belirlediğimiz veri tabanımızın aktif olarak kullanıldığı sql sunucumuzda veri tabanımızın yedeğini alıyoruz. Bir full bir de log backup almanız yeterlidir.

Almış olduğumuz yedekleri ikinci sql (mirror) sunucumuza aktarıyoruz.

Full backup ı dönerken norecovery mode ile dönüyoruz.

Lag yedeğinizi de aynı şekilde dönmelisiniz.

 

Eğer no recovery mod kullanamadan dönersek veri tabanımızı database mirrorring için kullanamayız.

Principal serverımızdan veri tabanımızın üzerine sağ tıklıyoruz Task > Mirror seçeneğini geliyoruz.

 

“Configure Security” seçeneğini işaretliyoruz.

 

Yapılandırma sihirbazı karşımıza geliyor.

 

Eğer otomatik failover özelliğini kullanacak ise bir witness server belirlememiz gerekiyor. Sadece iki sunucu ile yapacak isek “no” ile devam edebiliriz.

 

Principal server ayarlarını yapıyoruz. Daha önce belirttiğim gibi varsayılan olarak 5022 portu üzerinden haberleşme sağlanır. İstersek bu portu değiştirebiliriz.

Buradaki en önemli ayarlardan biri endpoint yani bağlantı noktası ayarıdır. SQL server lar da (hem principal hem de mirror) bir bağlantı noktası oluşturulur. Bu bağlantı noktası diğer sunuculardan gelen bağlantıları karşılamak için özel amaçlı olarak yaratılır. Database mirroring uygulamasını yapılandıracak yönetici bu endpoint ler için de yetkili olmalıdır.

Varsayılan olarak endpoint ismi “Mirroring” dir. Daha sonra bu ismi kullanarak kullanıcımıza izin vereceğiz.

 

İkinci sunucumuzu seçmek için “connect” seçeneğine tıklıyoruz.

 

İkinci sunucumuza bağlantı sağlıyoruz.

 

Mirroring instance ı için bir hizmet hesabı kullanabilirsiniz. Tamamı ile opsiyoneldir. Boş bırakıp devam ediyorum.

 

İşlem adımlarının özeti geliyor. Adımları tamamlıyoruz.

 

Kısa bir süre sonra yapılandırma bitiyor.

 

Ön yapılandırma işlemi bitmiş oluyor. Bu aşamadan sonra database mirroring i başlatmamız gerekiyor. Esas önemli kısımda burasıdır.

Karışımıza mirroring başlatma seçeneği geliyor fakat öncelikle yukarda belirttiğimi üzere database mirroring yapılandırması yaptığımız kullanıcıya endpoint ler için izin vermemiz gerekiyor. Bu yüzden bu “don not start mirroring” ile kapatıyoruz. Eğer kapatmayıp devam edersek hata alacağız.

 

“Mirroring” ismi ile ilgili endpoint her iki sunucu da Server Objects > Endpoint > Database Mirroring altında yer almaktadır.

 

Master veri tabanı seviyesinden her iki sunucu da da aşağıdaki sql cümleciğini yazıp çalıştırıyoruz.

GRANT CONNECT ON ENDPOINT::Mirroring TO PUBLIC

 

Burada public herkese izin verildiğini gösterir. İstersek sadece kendi kullanıcımıza da yetki verebiliriz.

Aynı işlemi ikinci sunucu da da yapmalıyız.

Tekrar principal server üzerinden database mirroring penceresine geliyoruz.

Burada yüksek performans ya da yüksek güvenlik olarak işlem modunu seçebiliriz. Witness server olmadığı için otomatik fail over kapalıdır.

Yüksek performans seçeneğinde principal server da transaction açılınca, aynı işlem mirror da da başlatılır. Principal sunucu işlemini bitirince mirror sunucuyu beklemeden işlemi gönderir.

Yüksek güvenlik kısmında ise aynı anda trancation gene açılır fakat commit işlemi için sunucular birbirini bekler. Bu tür durumlarda veri kaybı daha az olacaktır.

İhtiyacımıza göre operasyon işlemini seçip “start mirroring” seçeneğini seçiyoruz.

 

Database mirroring işlemi başlatılıyor.

 

Principal server ve mirror server lar da veri tabanı durumları mirroring e göre değişmektedir.

 

Bu aşamadan sonra principal server üzerinden yapılan değişikler artık mirror server a replike edilecektir.

Veri tabanına sadece pricipal server üzerinden erişim mümkündür.

Sunucuların rolleri nasıl değiştiğini, principal server ın kaybedilmesi durumunda nelerin yapılacağını Database Mirroring Failover ve Failback makalesinden okuyabilirsiniz.

https://ortacdemirel.com/sql-server-database-mirroring-failover-ve-failback-senaryolari

Paylaş

2 thoughts on “SQL Server Database Mirroring Yapılandırılması

Leave a Reply

Your email address will not be published. Required fields are marked *