Merhaba, Bu makalemde bir önceki makalede girişini yaptığım Database Mirroring konusuna devam edip Database Mirroring teknolojisinin gerçeklenmesini SQL Server 2008 de uygulamalı olarak anlatacağım.

3.Database Mirroring Konfigürasyonu ve Gerçeklenmesi
Database Mirroring uygulamasını birden fazla sunucu bilgisayarım olmadığı için kendi local bilgisayarımda gerçekleyeceğim. Eğer sizin test edebileceğiniz network konfigürasyonu düzgün olan ortamlarınız var ise birden fazla sunucuda çalışan SQL Serverlar üzerinde bu denemeyi yapabilirsiniz.
Fakat eğer benim gibi tek bir makinede bulunan 2 veya 3 SQL Server üzerinde bu denemeyi yapıyorsanız mutlak sürette konfigürasyonu yaparken Network portlarını farklı verin yoksa hata alırsınız. Local bilgisayarım da Windows -7 x86 işletim sistemi ve SQL Server 2008 Enterprise R2 versiyonunda 3 adet instance bulunmaktadır.
Bu instanceların adları Default İnstance MSSQLSERVER , MYTESTINSTANCE ve DEVINSTANCE şeklindedir. Bu Instance ların Mirroring olayındaki Rolleri aşağıdaki gibidir
Principal Server: MSSQLSERVER
Mirror Server: MYTESTINSTANCE
Witness Server: DEVINSTANCE
Şimdi örnek bir senaryo üzerinden veritabanı oluştururarak bu veritabanında yük oluşturuyorum. Böylece elimde Mirroring i anlatan örnek bir database oluşacaktır.
Aşağıdaki kodu çalıştırdığım zaman Principal olarak düşündüğüm database de TestDatabase adında bir database ve testtable adında bir tablo create edilecektir.
use master
go create database TestDatabase go ------------------------------ use TestDatabase create table testtable( col1 int identity(1,1) not null, col2 datetime null ) ----------------------------------------------- ----------------------------------------------- use TestDatabase alter table testtable add constraint DF_testtable_col2 default (getdate()) for col2 go -----------------------------------------------
set nocount on go while 1=1 begin insert testtable values(default) waitfor delay '00:00:01' end
İlk aşamada database e 10000 den fazla kayıt insert ettim. Database mirroring yapabilmem için Veritabanımın Recovery modeli Full modda olmalıdır. Simple yada Bulk-Logged model Mirroring i desteklemez.
Mirroring olayı için database anlamında gereken kurallar teorik olarak aşağıdaki gibidir.
1. Mirroring yapılacak database Full Recovery Model olmalı
2. Her iki SQL Server ı Çalıştıran Service Account ının aynı olmalı
3. Principal database in ismi ile Mirror database in ismi aynı olmalı.
Mirroring olayının adımları teorik olarak aşağıdaki gibidir.
1. Principal Server da kaynak veritabanının Full Backup ı alınır.
2. Alınan Backup Mirror Server üzerindeki Instance a Restore With NoRecovery Modda Aynı isimde Restore edilir.
3. Principal Server da Endpoint oluşturarak Mirroring konfigürasyonuna başla.
4. Mirroring konfigürasyonunda son adımdan önce Principal database in Transaction Log backup ını al.
5. Alınan Transaction log u Mirror Server üzerindeki Instance a Restore With NoRecovery Modda Restore edilir.
6. Mirroring Konfigürasyonu tamamlanarak Start Mirroring denilir.
Yukarıda belirttiğim kuralların adımları aşağıda SQL Server 2008 Management Studio üzerinde ekran görüntüsü vererek bu adımları teyit ediyorum.
1. Aşağıdaki resimdeki gibi veritabanının Recovery modelini ilgili database e sağ tıklayıp Properties menüsünde Options Sekmesinde Full olduğunu teyit ediyorum.


Şimdide Mirroring adımlarını uygulamaya koyup bunların ekran görüntülerini vererek daha iyi anlaşılmasını sağlamaya çalışacağım.
1.Aşağıdaki gibi TestDatabase inin Full backup ını sırasıyla ekran görüntülerinde olduğu gibi alıyorum.






















Böylece bu makaleninde sonuna gelmiş bulunmaktayım. Bir sonraki makalede bu konuya devam edip Mirroring Testleri ve Mirroring Monitor yapıp bu konuya son vereceğim.
Esen Kalın…
Mehmet Salih Deveci
Latest posts by Mehmet Salih Deveci (see all)
- Oracle Data Guard Mimarisi - Şub 19, 2014
- Oracle RMAN ( Recovery Manager ) -4 - Şub 15, 2014
- Oracle RMAN ( Recovery Manager ) -3 - Şub 12, 2014