MS SQL Database Mirroring işlemi için Yukarıda da gördüğünüz üzere 3 adet SQL server sunucusuna ihtiyacımız var. Öncelikle bu yapıyı ne gibi durumlarda kullanmanız gerektiğinden bahsetmek istiyorum. SQL sunucunuzda bir sorun olması durumunda felaket diye adlandırdığımız durumlarda çok kısa sürede 15 – 60 sn arası SQL sunucunuzun kaldığı yerden devam etmesi için önerilmektedir. Principal olarak adlandırdığımız sunucumuz ana SQL sunucumuz oluyor. Bu sunucu yazılım üzerinde tanımladığınız. Connection string ile datalarınızı yazdığınız ve uygulmanızın dataları çağırdığı sunucudur. Mirror sunucumuz principal sunucumuzda bulunan databasemizin birebir kopyasını alarak eş zamanlı olarak yazdığı yedek sunucumuzdur. Witness serverımız ise felaket durumunda sunucular arası geçişi sağlayarak failover diye adlandırdığımız durumda anahtar görevi görmektedir. Principal serverımızda bir sorun olduğunda servis cevap vermediğinde otomatik olarak mirror sunucuyu principal olarak tanımlayarak SQL datalarınızın erişiminde sorun yaşatmadan devam etmesini sağlıyor. Kısa süreli saniye bazlı bir downtime söz konusu olmaktadır. Bu detayı öncesinde belirtmek isterim. Tüm veritabanını kaybetmek yada çok uzun süre müdhale beklemesindense bu işlem hayat kurtaracaktır. Yapı için 2 adet MS SQL standart (principal ve mirror sunucusu için) 1 adet web lisansına (witness için) ihtiyacınız var. (witness için Express de kullanabilirsiniz. Ücretsiz olarak indirebilirsiniz.

İlk olarak Principal server MS SQL kurulumu ile işlemlerimize başlıyoruz. MS SQL standart isomuzu sunucumuza mount ediyoruz.

SQL Server Installation Center penceresinde Installation menusune tıklıyoruz.

New SQL server stand-alone installation or add features to an existing installation linkine tıklıyoruz.

MS SQL standart lisans ürün anahtarımızı giriyoruz. Test amaçlı kurulum yapacaksanız Evaluation lisansı ile kuruluma devam edebilirsiniz.

SQL Server 2014 Setup penceresinde kurulum adımlarına devam ediyoruz. Next butonuna basarak devam ediyoruz.

SQL Server 2014 Setup penceresinde Microsoft update admında güncelleme yaparak devam etmek için Use Microsoft Update to check for updates seçip devam edebilirsiniz. Ben güncellemeleri en son yapacağım için seçmeden devam ediyorum.

Install setup files adımında sistem kontrolleri sonrası otomatik geçecektir geçmez ise next butonuna basarak devam ediniz.

Setup Role adımında SQL server features installation seçip next butonuna basarak devam ediyoruz.

Feature sellection adımında seçimlerimizi gerçekleştiriyoruz. Instance features altında bulunan database engine service ve database engine service altında bulunan Full-text- and semantic ext… Seçiyoruz.

Ek olarak managment studio için alt tarafa iniyoruz. Shared features altında bulunan management tools –basic ve altında bulunan managment tools-complate seçip next butonuna basıyoruz.

Bu adım sonrası features rules adımında sistem tarama yapacak ve .net isteyebilir sisteminizde yüklü değil ise server manager üzerinden add role and features adımından .net yüklemeniz gerekiyor.

Instance Configuration adımında default instance seçip next butonuna basıyoruz.

Server Configuration adımında

SQL server agent, startup type automatic

SQL server database engine, startup type automatic

SQL Server Browser, startup type automatic

Tanımlamalarını yaptıktan sonra next butonuna basarak devam ediyoruz.

Database engine configuration adımında mixed mode seçiyoruz ve sa (super admin) şifremizi giriyoruz. Add current user butonunu tıklayarak Administrator kullanıcımızı ekliyoruz. Next butonuna basarak devam ediyoruz.

Ready to intall adımında yaptığımız seçimlerin özetini görüntülüyoruz. Seçimlerimizde sorun yok ise Install butonuna basarak yüklemeye başlıyoruz.

Yükleme işlemimiz başladı.

Yükleme işlemimiz tamamlanmak üzere biraz uzun sürebilir. Kullandığınız kaynak ve disk performansına göre değişiklik göstermektedir.

Yükleme işlemimiz tamamlandı. Complate adımında başarılı olan yüklemeleri görüyoruz. Close butonuna basarak kurulum ekranımızı kapatıyoruz.

Kurulum sonrası kurulan servis ve uygulamalarımızı kontrol ediyoruz.

SQL Server Configuration Manager açıyoruz. Protocols for MSSQLSERVER tıklıyoruz. Sağ bölümden TCP/IP çift tıklıyoruz.

TCP/IP Properties penceresinden IP addresses sekmesinden enabled seçeneğini yes olarak değiştiriyoruz. OK butonuna basıyoruz.

Uyarı verecektir OK basarak devam ediyoruz. Bu uyarıda bize SQL servisine restart attıktan sonra aktif olacağını söylüyor.

SQL servisimizi restart işlemini uyguluyoruz.

MS SQL Server Managment Studio çalıştırıyoruz. İlk açılışta aşağıdaki ekran ile karşılaşmanız muhtemel bu Studionuzun hazırlandığını göstermektedir. Kısa bir süre deavam edebilir

MS SQL Studiomuza login oluyoruz. Windows Authentication veya SA ile giriş yapabilirsiniz.

MS SQL kurulumumuz tamamlandı. Principal server için kullanacağımız SQL kurulumumuz sonrası aynı kurulum adımlarını Mirror sunucumuz ve Witness sunucumuz içinde uyguluyoruz. En başta da belirttiğim üzere Witness SQL sunucmuzda Web edition veya Express kullanabilirsiniz. Önerim Web edt kullanmanızdır.

MS SQL kurulumunu video olarak incelemek isterseniz aşağıdaki video ile MS SQL kurulumunu yapabilirsiniz.

https://www.youtube.com/watch?v=dcG9wr33ouk

MS SQL kurulumları bittikten sonra updatelerini yüklemeyi unutmayınız. Windows update üzerinden change settigs menusunde Microsft update başlığı altındaki box işaretlerseniz Windows update diğer microsoft ürünlerininde güncellemelerini tarayacaktır.

2 adet MS SQL standart ve 1 adet MS SQL web edt. hazır. Artık Mirror işlemine başlayabiliriz.

Önceden hazırlanmış olduğum demo veritabanımı sisteme yükledim. Yükleme işlemimi MDF dosyamı attach ederek tamamladım. Detayları linkinden erişebilirsiniz.

Mevcut veritabanımı şimdi mirroring için hazırlayacağım. Öncesinde tüm MS SQL sunucularıma bağlanabiliyor muyum bakalım? Tüm SQL sunucularıma principal olarak düşündüğüm SQL server üzerinden bağlanıyorum.

vtest olarak oluşturduğum database üzerinden herhangi bir tabloya bakıyorum. Data varmı diye…

vtest database üzerinde sağ tıklayarak properties seçiyorum.

Database properties penceresinde general adımında recovery model: Full olarak seçiyoruz. OK butonuna basıyoruz.

Databasemize takrar sağ tıklayıp bu sefer task adımı üzerinden Back Up menusune tıklıyorum.

Back Up Database penceresinde Databse seçip Full backup alıyoruz.

Full backup işlemimiz tamamlandı.

Ayrıca transaction log kaydımızı da yedekliyoruz. Databasemize takrar sağ tıklayıp bu sefer task adımı üzerinden Back Up menusune tıklıyorum.

Bu sefer backup type bölümünden transaction log seçiyoruz.

Transaction log yedeklememiz tamamlanmıştır.

Aldığımız back up dosyamızı mirror sunucumuza kopyalıyoruz.

Mirroring sunucumuzu açıyoruz. Yedek dosyamızı SQL in backup dizinine kopyalıyorum.

Mirror sunucumuzun MS SQL Server Management Studio açıp işlemlere başlıyoruz.

Databases sağ tıklayıp Restore Database tıklıyoruz.

Restore Database penceresinde general adımında device bölümü yanındaki tıklıyoruz.

Select backup devices penceresinde Add tıklıyoruz.

Yedek dosyamızı seçip OK butonuna basıyoruz.

Select backup devices penceresinde yedek dosya seçimimizi görüntülüyor ve OK butonuna basıyoruz.

Restore Database penceresinde Full olan database seçiyoruz. Log seçimini kaldırıyoruz.

Restore database penceresinde options adımına geçiyoruz. Recovery state RESTORE WITH NORECOVERY seçeneğini seçiyoruz. OK butonuna basıyoruz.

Database restore işlemimiz tamamlanmıştır.

Mirror sunucumuz üzerinde databasemizin restoring… yazdığını görebilirsiniz.

Şimdi transaction log kayıtlarımızı da restore edeceğiz. Tasks adımından restore adımından da transaction log seçiyoruz.

Restore transaction log penceresinde from device seçerek tıklıyoruz.

Select backup devices penceresinde Add butonuna tıklayınız.

Transaction log yedeğimizi seçiyoruz. OK butonuna basıyoruz.

Select backup devices penceresinde seçtiğimiz yedek dosyamızı kontrol ediyor ve OK butonuna basıyoruz.

Restore transaction log penceresinde options menusune geçiyoruz.

Leave the database non-operational…. Seçiyoruz.

Transaction log restore işlemimiz tamamlanmıştır.

Mirror sunucumuz üzerinde de işlemlerimiz tamamlanmıştır.

Principal sunucumuza gidiyoruz.

Şimdiye kadar principal ve mirror sunucularımızı yapılandırdık. Şimdi mirroring işlemimizin yapılandırmasının son adımlarına geliyoruz. Principal SQL sunucumuzun mirror yapılacak database sağ tıklayarak tasks adımından Mirror tıklıyoruz. (*)(bu bölüme geri dönebilirsiniz)

Database properties penceresinde configure security butonuna tıklıyoruz.

Configure database mirroring security wizard penceresi açılacaktır. Next butonuna basarak devam ediyoruz.

Witness server dahil edip etmeyeceğimizi soruyor. Yes işaretleyerek next butonuna basıyoruz.

Yapılandırmaya dahil edeceğimiz SQL serverları seçiyoruz. En başta belirtmiş olduğum üzere 1 adet principal server (MSSQL standart), 1 adet mirror server (MS SQL standart) ve 1 adet witness server (web edt. yada Express) next butonuna basıyoruz.

Principal server instance adımında zaten principal server üzerinde olduğumuzdan direk bilgiler gelecektir. Next butonuna basıyoruz.

Mirror server instance için connect butonuna basarak mirror sunucumuzun sa bilgileri ile bağlantısını sağlıyoruz. Next butonuna basarak devam ediyoruz.

Witness server instance için connect butonuna basarak witness sunucumuzun sa bilgileri ile bağlantısını sağlıyoruz. Next butonuna basarak devam ediyoruz.

Service accounts adımında bir işlem yapmadan next butonuna basarak devam ediyoruz.

Complete the wizard adımında özet bilgilerimizi görüntülüyoruz ve finish

Configuring endpoints adımında yapmış olduğumuz yapılandırmalar tekrar kontrol ediliyor.

Yapılandırma tamamlandı. Close butonuna basıyoruz.

Karşımıza database properties penceresi açılacak. Start mirroring tıklayarak mirror işlemini başlatıyoruz.

FQDN uyarısı verebilir önemli bir hata değil yes butonuna basarak devam edebiliriz.

Mirroring başlayamadığına dair bir hata alabilirsiniz. Bu hata SQL server authentication ile ilgili bir hata çözümü basit tek dert 3 SQL sunucu üzerinde de bu işlemleri yapmanız gerekmektedir.

Almış olduğumuz hata sonucu 3 SQL servirimizda da aynı işlemi yapıyoruz. SQL Server Configuration Manager üzerinden SQL Server servisimizi sağ tıklıyor ve properties tıklıyoruz.

Log On sekmesinde browse butonuna tıklıyoruz.

Bu bölümden Administrator kullanıcısını ekliyoruz.

Administrator kullanıcısı için admin şifremizi giriyoruz. Servisi restart edip apply diyoruz işlemler tamamlandıktan sonra OK butonuna basarak devam ediyoruz.

(*) bölümüne dönerek işlemlerimizi tekrar yapıyoruz.

İşlemlerimiz tamamlandıktan sonra mirror işlemi tamamladığını aşağıdaki penceredeki gibi göreceksiniz.

Principal sunucumuzu kontrol ediyoruz. vtest databasemiz principal ve sync şeklinde gözükmektedir. Bu mirror işleminin principal tarafında sorun olmadığını göstermekte.

Mirror sunucumuza gidiyoruz. Aynı şekilde vtest databasemizi kontrol ettiğimizde mirror ve sync gözükmekte yine hiçbir sorun yok.

Databsemiz içinde ki dataların sync durumunu incelemek ve mirror işlemini görüntülemek için databsemize sağ tıklayarak Tasks adımından launch databse mirroring monitor tıklıyoruz.

Açılan pencerede Go menüsüne tıklıyoruz. Açılan adımlardan database mirroring monitor tıklıyoruz.

Register mirrored database tıklıyoruz.

Register mirrored database penceresinde connect butonuna tıklıyoruz. SQL sunucumuzu seçiyoruz.

Databasemizi seçip OK butonuna basıyoruz.

Database mirroring monitor penceresinde sync durumunu görüyoruz. Bir süre sonra hepsinin yeşil olduğunu göreceksiniz.

Data büyüklüğünüz ve kullandığınız alt yapı göz önünde bulundurulursa bu işlem biraz zaman alabilir. Gördüğünüz gibi işlemlerimiz tamam şuanda principal ve mirror sunucumuz sync durumda

Mirroring SQL işlemimiz tamamlanmıştır. Uzun soluklu bir işlem hacmine sahip olduğu için yaptığınız adımları dikkatli ve kontollü yapmanızı öneririm özelikle principal ve mirror sunucu yapılandırmalarında backup restore adımlarında options bölümlerinde yapılan işlemler çok önemlidir.