Snapshot Replication Kurulumu

1 Kas by NURULLAH ÇAKIR

Snapshot Replication Kurulumu

Snapshot teknolojisi diğer replication tiplerinde ilk senkronizasyon esnasında kullanılır. Aşağıda replication türleri ile ilgili diğer makalelerimi bulabilirsiniz.

Transactional Replication Kurulumu“,

Peer to Peer Transactional Replication Kurulumu“,

Merge Replication Kurulumu

 

Snapshot Replication ile verinin o anki kopyası diğer node’a aktarılır ve herhangi bir değişiklik daha sonra 2.sunucuya/instance’a replike edilmez. Senkronizasyon yeniden çalıştığında tekrar tüm veri aktarılır. Her seferinde bu şekilde döngü devam eder. Küçük tablolar’ın düzenli olarak başka bir instance’a aktarılması gereken durumlarda kullanmak mantıklı olacaktır.

Adım adım snapshot replication’ı gerçekleştirelim.

Eğer 1.sunucuda distributor’u yapılandırmadıysanız aşağıda anlatacağımız şekilde bu işlemi gerçekleştirebilirsiniz. Eğer distributor’u daha önce yapılandırdıysanız aşağıdaki kısmı atlayıp publication tanımladığımız kısma geçebilirsiniz.

İlk olarak AdventureWorks2014 veritabanında aşağıdaki script yardımıyla replike edeceğimiz tabloyu oluşturalım.

USE [AdventureWorks2014]
GO
CREATE TABLE [dbo].[SnapshotReplication](
[ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[Ad] [varchar](200) NULL,
 CONSTRAINT [PK_SnapshotReplication] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Daha sonra aşağıdaki gibi Configure Distribution diyoruz.

Gelen ekranda Do not show this page again’i tıklayarak next diyoruz.

 

Bir sonraki ekranda aşağıdaki gibi seçim yaparak Distributor’ü kurulum yaptığımız sunucuda oluşturuyoruz. Arka planda distribution veritabanıda oluşacak. Next diyerek ilerliyoruz.

 

 

Bir sonraki ekranda snapshot dosyalarının tutulacağı bir paylaşım istiyor. “Paylaşım Tanımlamak ve Tanımladığımız Paylaşımı SQL Server’ın olduğu sunucuya Map Etmek” isimli makalemde nasıl paylaşım oluşturacağımızı anlattım. Paylaşıma iki instance’ın kullandığı sql server agent servis hesabını ve kurulum yaptığınız kullanıcıyı eklemeniz gerekir. SQL Server Agent servis hesapları windows account olmalıdır. Lokal bir kullanıcı olursa paylaşımı göremez.

 

Ben aşağıdaki gibi Sunucu1 üzerinde Replication isimli bir klasör oluşturup gerekli yetkileri verdim ve Snapshot folder olarak paylaşım adresini yazdım. Next diyerek ilerliyoruz.

 

 

Bir sonraki ekranda aşağıdaki gibi distribution veritabanının data ve log dosyalarının hangi path’lerde tutulacağı bilgilerini girip next diyerek ilerliyoruz.

 

 

Bir sonraki ekranda bu distribution veritabanının hangi Publisher’ın kullanacağını belirliyoruz. Biz Publisher ve distributor’ın aynı instance üzerinde kuracağımız için aynı instance’ı seçili bırakıp next diyerek ilerliyoruz.

 

 

Bir sonraki ekranda aşağıdaki gibi Configure Distribution seçili iken next ve Finish diyerek distributor yapılandırmasını tamamlıyoruz.

 

 

Kurulum tamamlandıktan sonra aşağıdaki gibi sistem veritabanlarının içinde distribution veritabanını görmeniz gerekir.

 

 

Distributor yapılandırmamız bittikten sonra 1.instace’da aşağıdaki gibi Local Publications’a sağ tıklayarak New Publication diyoruz.

 

 

Gelen ekranda aşağıdaki gibi replike edeceğimiz veritabanını seçiyoruz.

 

 

Gelen ekranda aşağıdaki gibi Snapshot publication’ı seçerek Next diyoruz.

 

 

Bir sonraki ekranda Replike edeceğim article’ların arasından başlangıçta oluşturduğum tabloyu seçerek next diyorum.

 

 

Bir sonraki ekranda bize tablonun tamamını değil de belli bir filtreye göre filtrelenmiş halini aktarmak istersek bu kolaylığı sağlayan ekran geliyor. Aşağıdaki ekrandan Add diyerek istediğimiz filtreyi ekleyip tablonun belli bir kısmını replike edebiliriz. Biz şu anda herhangi bir filtreleme yapmadan next diyerek ilerliyoruz.

 

 

Bir sonraki ekranda verilerin snapshot’ının şimdi mi yoksa daha sonra mı alınacağını soruyor. Aşağıdaki gibi Create a snapshot immediately and keep the snapshot available to initialize subscription’ı seçerek, snapshot’ın şimdi alınmasını istediğimizi söylüyor ve next diyerek ilerlemeye devam ediyoruz.

 

 

Bir sonraki ekranda aşağıdaki gibi Snapshot Agent’ın çalışacağı kullanıcı bilgisini soruyor. Security Settings’e tıklıyoruz.

 

 

Snapshot Agent için set edeceğiniz kullanıcının minimum hakları:

  • Distribution veritabanında db_owner olmalı.
  • Publication yapılacak veritabanında db_owner olmalı.
  • Snapshot paylaşımında write hakkı olmalı.

Microsoft bu  hesap için Windows Account set etmemizi öneriyor.

Benim kendi test ortamımda iki sql server instance’ı ve iki sql server agent instance’ı da aynı windows sql server servis hesabını kullanıyor ve gerekli yetkileri var. Snapshot paylaşımı üzerinde de bu kullanıcıyı daha önce yetkilendirdim. Bu yüzden aşağıdaki gibi set ederek ilerliyorum.

Bir sonraki ekranda aşağıdaki gibi Create the publication seçili iken next  diyerek ilerliyoruz.

Gelen ekranda Publication’a bir isim veriyoruz ve finish diyerek publication kurulumunu tamamlıyoruz.

 

 

Publication’ı tanımladıktan sonra 1.instance üzerinde aşağıdaki gibi New Subscriptions diyoruz.

 

 

Gelen ekranda aşağıdaki gibi biraz önce tanımladığımız SnapshotPublication’ı seçip next diyoruz.

 

 

Bir sonraki ekranda subcriptions’a verilerin nasıl geleceğini soruyor. Yani veriler Distributor’den subcscriber’lara mı aktarılacak yoksa subscriberlar distributor’dan mı veriyi alacaklar. Bu yöntemler Push ya da Pull Subscription olarak geçiyor. “SQL Server Replication Nedir?” isimli makalemi okuduysanız oradaki örnekten devam edersek  Stok takip personeli gazeteleri abonelere kendimi dağıtacak yoksa aboneler gazete deposuna gelip gazateyi kendimi alacak sorusudur diyebiliriz.

Microsoft aşağıdaki ekranda görüldüğü gibi yönetimin kolay olması için stok takip personelinin biraz yorulmasını tercih edebilirsiniz diyor. Bizde yönetimin kolay olması için push subscriptions’ı seçerek Distrubution agent Location’ı Distributor’un bulunduğu instance’ta çalışacak şekilde set ediyoruz ve next diyerek ilerliyoruz.

Bir sonraki ekranda Subscriber olarak 1.instance gelecektir.

 

 

Biz 2.sunucunun subscriber olmasını istediğimiz için Add Subscriber diyerek 2.instance’ı ekleyerek aşağıdaki gibi seçimimizi yapıyoruz.

 

 

Bir sonraki ekranda Distribution Agent’ın hangi kullanıcı ile çalışacağını soruyor. Aşağıdaki resimde gördüğünüz ….’ya tıklıyoruz.

 

 

Distribution Agent için set edeceğiniz kullanıcının minimum hakları:

 

  • Distribution veritabanında db_owner olmalı.
  • Pull Subscription kullanılacaksa subscription(hangi veritabanına replike edeceksek o veritabanı) veritabanında db_owner olmalı.
  • Snapshot paylaşımında read hakkı olmalı.
  • Publication Access List(PAL)’ın bir üyesi olmalı.

 

Set edeceğiniz kullanıcıyı PAL’a üye yapmak için Publisher’ın olduğu instance’ta publication’a gelip sağ tıklayarak properties diyoruz.

 

Açılan ekranda aşağıdaki gibi Publication Access List’e giderek listelenen kullanıcılar arasında kendi kullanıcımızın olup olmadığına bakıyoruz.

 

 

Eğer yoksa Add diyerek ekliyoruz. Eğer kullanıcımız Add dediğimizde çıkmazsa aşağıdaki gibi bir uyarı verecektir.

 

 

Uyarıda, kullanıcının burada listelenmesi için Publisher ve Distributor instance’ında tanımlı olmasına ve replike edeceğimiz AdventureWorks2014 veritabanına erişiminin olması gerektiğini söylüyor. Eğer kullanıcınız burada yoksa publisher ve distributor’un olduğu instance üzerinde kullanıcınızı tanımlayıp AdventureWorks2014 üzerinde de yetkilendirmeniz gerekir.

 

Distribution Agent Security’ye geri dönersek, ben Run under the SQL Server Agent service account’u ve By impersonating the process account’u seçerek ilerliyorum. Tabi SQL Server Agent Servis hesabıma gerekli yetkileri verdim.

 

 

Bir sonraki ekranda senkronizasyonun nasıl olacağını soruyor.

 

Run continuousluy seçersek sürekli olarak senkronize olur ve gerçek zamanlıya yakın bir kopyamız olur.

Run on demand only seçersek sadece tetiklediğimizde çalışır.

Define schedule seçersek belirli zaman aralıklarıyla düzenli olarak çalışmasını sağlarız.

 

 

Biz günde 1 defa replike etmesini istediğimiz için Define schedule diyerek günde 1 defa çalışacak şekilde aşağıdaki gibi ayarlıyoruz.

 

 

Bir sonraki ekranda, subscriber’a(asıl veritabanını replike edeceğimiz veritabanı,yani 2.instance’daki AdventureWorks2014) hemen verileri aktarmak için Immediately’yi seçerek next diyoruz.

 

 

Bir sonraki ekranda aşağıdaki gibi Create the subscription(s) seçili haldeyken next diyoruz ve Finish diyerek işlemi tamamlıyoruz.

 

 

Next ve finish diyerek işlemi tamamlıyoruz. Artık günde 1 kere çalışan job’ımız 1.Instance’daki AdventureWorks2014 veirtabanındaki SnapshotReplication tablosunu 2.Instance’daki AdventureWorks2014 veritabanına aktaracak. Makalenin başında da bahsettiğimiz gibi gün içinde oluşan fark dataları değil tüm tabloyu aktaracak. Herhangi bir zaman da manual olarak snapshot’ın çalışmasını istiyorsanız SSMS üzerinden aşağıdaki gibi SnapshotPublication’a sağ tıklayarak Reinitialize All Subscriptions diyebilirsiniz.

 

 

Açılan ekranda aşağıdaki seçimleri yaparak Mark For Reinitialization diyoruz. Bir süre sonra işlem tamamlanacaktır ve verilerin 2.instance üzerine yansıdığınız görebileceğiz.

 

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir