SQL Server Data Replication (Veri Yineleme) – II

SQL Server, Oracle Add comments

Önceki yazıda replikasyonla ilgili terminolojiyi anlatmaya çalıştık. Bu yazıda SQL 2000 ve 2005 üzerinde replikasyon türlerinin nasıl kurulacağını örneklendirelim. Aynı makine üzerinde koÅŸan iki tane SQL Server 2000 instance’imiz var. Birinin adı WXX diÄŸerinin adı WXX\KAFKA. WXX sunucusunu yayıncı ve dağıtıcı, WXX\KAFKA sunucusunu da abone olarak yapılandıracağız. WXX üstündeki KAYNAK isimli veritabanını yayınlayacağız. Sunucuları ilklendirmek ve full backup’ın snapshot klasörüne sorunsuz yüklenmesi ve diÄŸer iÅŸlemler için SQL Server Agent servisinin yetkili bir domain ile baÅŸlatmak doÄŸru bir çözüm olur.

İlk adım olarak WXX sunucusunu hem publisher hem de distributor olarak yapılandıracağız. Bunun için üst menüdeki Wizard bölümüden veya sunucu ismini sağ tıklayıp Properties bölümünden replikasyon sihirbazını başlatabiliriz. Enterprise Manager içerisinde WXX sunucunu sağ tıklayıp Properties bölümünden Replication sekmesine girelim. Burada Configure düğmesini tıklayalım.

Karşılama ekranını geçtikten sonra “Select Distributor” penceresine geçelim. “Make ‘WXX’ its own Distributor; SQL Server will create a distribution database and log” seçeneÄŸi ile Publisher ve Distributor’un aynı sunucu olacağını belirtelim.

Sonraki ekranda snapshot klasörünü belirteceÄŸiz. Replikasyonun mantığı gereÄŸi yayıncı ve abonelerin farklı makinelerde koÅŸuyor olmasından dolayı tüm sunucuların eriÅŸmesi için bu klasörün network yolunun tanımlanması daha mantıklı olacaktır. EÄŸer yerel adres verilirsen sadece push subscription’lar desteklenir. Burada C:\SnapshotYedek klasörü için \\WXX\SnapshotYedek aÄŸ yolunu giriyoruz.

Bir sonraki ekranda yayınlama ve dağıtma ayarları gerçekleÅŸtirilir. Burada istenilirse ‘distribution’ veritabanının adı ve ona ait data ve log dosyalarının konumu deÄŸiÅŸtirilebilir.

Bu ekranla birlikte WXX sunucunun hem yayıncı hem de dağıtıcı rolünde olması saÄŸlandı. Bu bölümdeki adımları bitirdiÄŸimizde WXX üzerinde ‘distribution’ veritabanı oluÅŸturulur ve replikasyon sürecini yönetmek ve takip etmek için “Replication Monitor” aracı aktifleÅŸtirilir.

Åžu an itibariyle yayımcı ve dağıtıcı sunucularını tanımlamış olduk. Åžimdi yayımcı sunucunun ne yayınlanacağını (publication), abonelere gönderilecek artikelleri tanımlayacağız. Bunu farklı menülerden yapabiliriz. Bunun en kısa yolu Enterprise Manager içerisindeki “Tools » Replication » Create and Manage Publications…” menüsünü kullanacağız.

Bu menünün açtığı pencerede WXX altındaki Kaynak veritabanını seçip “Create Publications” düğmesini tıklayarak bu database için bir yayın hazırlayalım. Karşılama ekranından sonra bu yayının hangi replikasyon türüyle yayınlacağı seçilir. Burada en basit olan “Snapshot Replication” yöntemini seçeceÄŸiz.

Sonraki ekranda abonelerin veritabanı sistemi düzeyinde türü seçilir. Aboneler SQL Server sisteminden olduğu gibi Oracle, Access gibi heterojen sistemler de olabilir. Burada SQL Server 2000 seçeneğini işaretleyip bir sonraki ekrana geçelim. Bu yeni ekranda yayınlanacak artikelleri seçeceğiz. Burada Kaynak veritabanı altında örnek olarak oluşturduğumuz Musteri tablosunu seçeceğiz.

Bu ekranda tabloların yanındaki “…” düğmesini tıklayarak artikelin adı ve bu nesnelerin karşı taraftaki adı düzenlenebilir. Sonraki ekranlarda varsa IDENTITY uyarısı yapılır ve “define data filters” seçeneÄŸiyle yatay veya dikey filtreleme yapılabilir. Filtreleme iÅŸlemi SQL Server replikasyonunun önemli bir özelliÄŸi olup tablonun sadece belli kolon veya satırlarını abonelere göndermemize imkan saÄŸlar. Bu ekranlarda varsayılan seçenekleri iÅŸaretleyip yayın tanımlama sürecini bitirelim. Bu iÅŸlemden sonra hem Kaynak veritabanının altında hem de Publications bölümünde tanımlanan yayın bilgisi görünür.

Bu aÅŸamada yayıncı ve onun yayınlayacağı makaleler ve bunları dağıtacak dağıtıcı tanımlanmış oldu. Åžimdi bu yayınlara abone olacak üyeleri tanımlayacağız. Bunun için “Tools » Replication” menüsü kullanılabildiÄŸi gibi Replications bölümü altındaki yayın (Kaynak) saÄŸ tıklanarak “Push New Subscription” menüsü kullanılabilir. “Push Subscription Wizard” ekranında bir veya daha fazla muhtemel abone seçilebilir. Burada WXX\KAFKA sunucusunu seçeceÄŸiz.

Sonraki ekranlarda Kaynak veritabanının karşı taraftaki karşılığının ne olacağı ve Distribution Agent’in bir kere mi yoksa belli peryotta mı çalışıp çalışmayacağı belirtilir. Üye makinelerde Kaynak veritabanının oluÅŸturulmuÅŸ olması lazım. Bunu bu ekranda “Browse or Create” buttonuyla saÄŸlayabiliriz.

Görüldüğü gibi SQL Server ortamında replication iÅŸlemini yapmak çok kolay. Bu yazıda örnek Snapshop replication türünü ele aldık. Replikasyon türünün seçildiÄŸi ekranda Transactional veya Merge türleri seçilerek bu yöntemler de yapılandırılabilir. Transactional replikasyon için sözkonusu tablolar üzerinde primary key’in tanımlı olması gerekir.

SQL Server 2005′te replikasyon iÅŸlemini yapmak daha da kolaylaÅŸtı. Bu iÅŸlemi yapılandırmak için Management Studio’da Replication bölümü kullanılır. AÅŸağıdaki ÅŸekilde AHMETKAYMAZ isimli aynı sunucu üzerinde Kaynak1 veritabanı Kaynak2 veritabanını aktarılmıştır.

SQL Server replikasyonla ilgili olarak aşağıdaki notlarla yazımızı bitirelim.

  • Sadece üzerinde Primary Key tanımlı tablolar replike edilebilir.
  • Kaynak veritabanındaki tablo TRUNCATE edilemez.
  • EÄŸer hedef veritabanında bir Primary Key silinirse ve daha sonra kaynaktan o primary key ilgili bir güncelleme gelirse replikasyon bu kaydın karşılığını bulamadığı için hata verecektir. Sonraki iÅŸlemleri de COMMIT etmeyecektir.
  • Kaynaktaki tabloya ait yeni kolonu replikasyona dahil etmek veya var olan bir kolonu replikasyonda çıkarmak istediÄŸimizde aboneleri bundan nasıl etkileneceÄŸi yani yeniden snapshot replikasyonun yapılıp yapılmayacağını Publication Properties » Articles sekmesindeki tablo çift tıklanarak Table Article Properties bölümü açılır ve oradan ilgili iÅŸlemler belirtilir
  • SQL Server 2005 ile aynı replikasyonda topolojisinde bulunacak SQL Server sürümü en az SQL Server 7.0 (SP4) ve SQL Server 2000 (SP3) olması gerekir.
  • Diskte veri saklama formatları aynı olduÄŸu için SQL Server’in 32-bit ve 64-bit sürümleri aynı replikasyon modelinde kullanılabilir.
  • Farklı SQL Server sürümleri arasında replikasyon kurulacağı zaman Distributor sunucunun versiyonu Publisher’dan daha eski olmamalı.
  • SQL Server 2005 ancak publisher modunda olan SQL Server 2005 ve SQL Server 2000 için Distributor olabilir. SQL Server 7.0 için dağıtıcılık yapamaz.

MSDN’den alınmış aÅŸağıdaki tablolar hangi SQL Server sürümlerinin aynı topolojide bulunabileceÄŸini göstermektedir.

Salt-Okunur Aboneler için Transactional Replication ve Snapshot Replication

Distributor

SQL Server 7.0

SQL Server 2000

SQL Server 2005

Publisher

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2000

SQL Server 2005

Subscribers

SQL Server 7.0

SQL Server 2000

SQL Server 2005

SQL Server 7.0

SQL Server 2000

SQL Server 2005

SQL Server 7.0

SQL Server 2000

SQL Server 2005

Güncellenebilen Aboneler için Transactional Replication

Distributor

SQL Server 7.0

SQL Server 2000

SQL Server 2005

Publisher

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2000

SQL Server 2005

Subscribers

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2005

SQL Server 7.0

SQL Server 2000

SQL Server 2005

Merge Replication

Distributor

SQL Server 7.0

SQL Server 2000

SQL Server 2005

Publisher

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2000

SQL Server 2005

Subscribers

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 7.0

SQL Server 2000

SQL Server 2005

Bu yazıda SQL Server 2000 replication ve SQL Server 2005 replication işlemlerinin nasıl yapılacağını öğrenmiş olduk.

12 Responses to “SQL Server Data Replication (Veri Yineleme) – II”

  1. Alper Says:

    teÅŸekkürler : ) elinize saÄŸlık…

  2. Mehmet Yazıcı Says:

    Peki aynı replikasyon iÅŸlemini co-locate sunucu için yapabilirmiyiz? yani ÅŸirket içerisinde bulunan sunucumdaki SQL Server 2005 üzerindeki veritabanımı, datacenter’ da bulunan Serverımdaki Sql server’ a replikasyon iÅŸlemini yapabilirmiyim?

  3. Ahmet Kaymaz Says:

    Replikasyon gibi teknolojilerin amacı zaten dağıtık sitemler arasında aktarım yapılmasını sağlamaktır. Bahsettiğiniz 2 sunucu birbirini gördükten sonra kolayca replikasyon kurabilirsiniz.

  4. savas Says:

    replication ı oluşturduktan sonra çalıştırmak için job mı yazmamız gerekiyor?
    eger oyleyse nasıl olacağı hakkında bilgi verirmisiniz.

  5. Ahmet Kaymaz Says:

    Replication kurulduktan sonra çeÅŸitli JOB’lar kurar. Bu Joblar zamanı geldikçe devreye girer. EÄŸer snapshot ihtiyacı varsa Snapshot Agent’i bir kereye mahsus olmak üzere manual veya otomatik çalıştırmanız gerekmektedir.

  6. savas Says:

    snapshot agent i nereden çalıştıracağım hakkında yardımcı olurmusunuz yada. 2 bilgisayarım arasında replication sistemi kurmak istiyorum ama publisher olan sql server standart , subscriber ise express versiyon.. replication kurdum ama subscriber tarafında oluşmuyor table lar anlamadım 3 gündür uğraşıyorum lütfen yardım edin..
    teşekkürler

  7. Ahmet Kaymaz Says:

    SavaÅŸ,

    SQL Server 2005 için Object Explorer içerisindeki Replication menüsünün altındaki Local Publications altındaki yayını saÄŸ tıklayıp “View Snapshot Agent Status” programını çalıştırırsan orada Start düğmesini görebilirsin. EÄŸer replikasyonu “automatic initialization” olarak kurduysan snapshot dosyaları oluÅŸturulduktan sonra karşıdaki aboneye ilgili tabloları ve kayıtları aktaracaktır.

  8. Muhsin AKYÜZ Says:

    Trans Replikasyon işlemi başlatıldıktan sonra. Subscriber olarak belirlenen alanda herhangi bir silme işlemi gerçekleşirmi.Yani veritabanı ve/veya table larda bir veri kaybı yaşarmıyım.?

  9. Oğuzhan TEKİN Says:

    Öncelikle makaleniz için teşekkür ederim.

    Transactional Replikasyon sırasında abone olarak tanımlanan bölgenin databaseinde bir değişiklik veya silinme gerçekleşirmi?

  10. Ahmet Kaymaz Says:

    OÄŸuzhan,

    kaynak sistemde yani Publisher tarafında silme olursa ve bu işlemleri de replikasyona dahil ediyorsanız doğal olarak abone tarafında da silme olur.

  11. Zekeriya Says:

    Merhabalar, Replikasyon işlemini yalnızca local serverler arasındamı yapabiliyoruz? Uzak serverlar arasında da uygulayabilirmiyiz?

  12. Ahmet Kaymaz Says:

    Zekeriya,

    replikasyonu birbirine erişebilen yerel veya uzak hiç farketmez iki sunucu arasında kurabilirsiniz.

Leave a Reply


+ 1 = 6

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS GiriÅŸ