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.
Mirroring

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
-----------------------------------------------

1

Bu database de yük oluşması açısından testtable tablosuna aşağıdaki T-sql koduyla binlerce kayıt insert ediyorum.

 

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.

2

2. Local bilgisayarımda SQL Server Configuration Manager dan üç SQL Server Instance sını çalıştıran Service account ının aynı olduğunu teyit ediyorum.

3

Ş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.

4

5

6

2.Bu adımda ise Principal Server dan alınan Full Backup ı Mirror Server da Restore ediyorum. Fakat Restore ederken Restore With NORECOVERY modda olmasına dikkat etmelisiniz.

7

8

9

10

3.Şimdi Database mirroring konfigürasyonunu yapalım. Bu adımda aşağıdaki ekran görüntülerindeki adımları eksiksiz yapmanız gerekmektedir.

11

12

Bu adımda isterseniz witness seçmeden devam edebilirsiniz. Bu durumda Rol değişikliğine ihtiyaç duyulduğunda bunu siz gerçekleştirmek zorundasınız.

13

14

Bu adımda Principal, Mirror ve Witness Database leri aynı sunucuda olduğu için Portlar farklı olmalıdır. Zaten Management Studio default olarak aynı sunucuda olduğu için portu farklı olarak alıyor.

15

16

17

Bu adımda Tüm SQL Instance larının Service account ı aynı olduğu için girmeye gerek yok.

18

Ayrıca Service Account larının Endpoint ler üzerinde çalışabilmesi için Service Hesabına Connect yetkisi vermeliyiz. Aşağıda NT AUTHORITY\SYSTEM Login ine Connect hakkı verip yukarıdaki adımı bundan sonra geçiyoruz.

21

19

Bu adımda Close deyip devam etmeden önce 4 ve 5.Adımları gerçekleştiriyoruz. 4 ve 5.adımlardan sonra Close deyip Mirroring in son adımına geçiyoruz.

20

4.      Bu adımda Mirroring tam başlamadan önce son defa Principal database inin Transaction Log backup ı alınır .

23

24

5.Bu adımda Principal database den alınan Transaction Log Backup Mirror database inin üzerine Restore With NoRecovery olarak Restore edilir.

25

26

6.Bu adımda 3.Adımın sonunda gelen ekrandaki Close Butonuna basılır ve aşağıdaki gibi Mirroring in son adımı gelir.

22

Yukardaki ekranda Start Mirroring butonuna basılır ve Mirroring eğer doğru konfigüre edilmişse aşağıdaki gibi Senkron olmuş bir şekilde çalışır.

27

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

Veritabanı Yöneticisi

 

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s