Bu makalede AlwaysOn yapımızda primary sunucusuna eklenen database’in otomatik olarak secondary sunucusuna ekleme yöntemini ele alacağız. İlk olarak Automatic Seeding kavramının ne olduğuna değinelim.
SQL Server’da, bir AlwaysOn Availability Group’a yeni bir replica (yeni bir düğüm) eklediğinizde, yeni replica’nın veritabanlarını almak ve senkronize etmek için Automatic Seeding devreye girer. Bu özellik, yeni replica’ya veritabanlarının fiziksel kopyalarını otomatik olarak kopyalar ve güncel tutar. Bu süreç tamamen otomatik olduğu için manuel müdahale gerektirmez.
Faydaları: Automatic Seeding, yeni bir replica eklediğinizde veritabanlarının otomatik olarak kopyalanmasını sağlar, bu da yöneticilerin manuel müdahale yapmalarını engeller. Bu özellik, veritabanlarının hızla senkronize edilmesini ve yüksek erişilebilirlik sağlanmasını kolaylaştırır. Yeni bir replica eklerken zaman kazandırır, çünkü veritabanlarını elle kopyalamak gerekmez. Ayrıca, sistemin yüksek erişilebilirliğini sürdürürken, veri kaybı riski de azaltılır.
Zararları: Automatic Seeding, ağ üzerinde büyük veri transferlerine yol açarak ağ trafiğini artırabilir. Bu durum, ağ altyapısının yetersiz olduğu durumlarda performans sorunlarına neden olabilir. Ayrıca, büyük veritabanlarının kopyalanması zaman alabilir ve bu süreçte sistemde geçici bir performans kaybı yaşanabilir. Auto Seeding’in düzgün çalışabilmesi için doğru yapılandırma gerektirir ve yanlış yapılandırılmış bir sistemde sorunlar ortaya çıkabilir. Bunun yanı sıra, otomatik işlem nedeniyle kontrol kaybı yaşanabilir; örneğin, özel durumlar için manuel müdahale gerekebilir.
Automatic Seeding, sadece ve sadece her iki sunucuda da dosya yolları aynıysa çalışır ifadesi yanlıştır. Eğer path’ler farklıysa, Automatic Seeding işlemi default sql server pathleri üzerine veritabanı oluşturmaktadır.
Makalenin sonunda basit bir scriptle SSMS arayüzüne gerek kalmadan primary AG altına database ekleme işlemini ele alacağız. Şuan database üzerinde Seeding Mode olarak manuel olarak işaretlenmiş durumda.

Bu işlemi uygulamalı bir şekilde yapmak için sıfırdan bir database oluşturalım. Bu database’i primary sunucusunda Automatic seeding yapısıyla AlwaysOn yapısına ekleyelim.

Primary sunucusunda AlwaysOn yapısına otomatik seeding modda eklemiş olduğumuz veritabanı secondary sunucusuna replica olmuş durumda .

Seeding mode yukarıdaki veritabanımızı eklerken başlangıçta manuel olmasına rağmen SSMS arayüzünden auto seeding yapısıyla primary sunucusunda veritabanı eklediğimizde secondary sunucusunda senkron olmuş olur. AG properties ekranından secondary sunucunun seeding mode otomatik bir yapıya dönüşmüş olduğunu görmüş oluyoruz.

Not: Seeding mode her sunucuya özgü çalışmaktadır. Genel bir ayarı bulunmamaktadır.
Eğer veritabanımızı ilk AG altına alınırken Skip initial data synchronization mode seçilerek sadece primary altına replica olmuş olabilir. Veritabanımızı primary AG üzerine eklemeden önce AG properties ekranından seeding mode’u otomatiğe çekip secondary sunucusunda olmayan databaselerin otomatikmen replica olmasını sağlayabiliriz. Büyük veritabanları restoring moduna girmektedir.



Şunu da belirtmek gerekir ki Başlangıçta seeding mode manuel olup Skip initial data synchronization ile veritabanımızı ekleseydik secondary sunucusuna veritabanımız gelmezdi sadece ilgili AG altında veritabanımız ünlem işareti olmuş olurdu. Primary sunucusunda AG properties ekranında seeding mode otomatik yapıya çekilirse secondary sunucularındaki veritabanı replica olur.
Veritabanları skip initial data synchronization yöntemiyle eklenip seeding mode Automatic olması durumlarında büyük küçük tüm dblerin otomatik olarak secondary sunucusuna geçmesi sağlanır. Bu yöntem yerine primary sunucusunda skip initial data synchronization yöntemiyle primary sunucusuna eklenen db, secondary sunucunda full,diff ve log backup’ı restoring modda secondary sunucusunda restore edilerek daha sonra AG’ye senkron edilmesi gerekmektedir. Bu yöntem denenmek istendiğinde Seeding Mode Automatic yapıya çekilmesi gerekmektedir.
Aşağıdaki bulunan bir başka örnek veritabanı skip initial data synchronization eklenmeden önce Seeding Mode primary ve secondary sunucularında otomatik değilse Secondary sunucusunda aşağıdaki resimde görüldüğü gibi veritabanı dahil edilmez. Seeding Mode otomatik olarak manuel yapısına dönüştürülmektedir.




Not: Veritabanı ekleme işlemi skip initial data synchronization ile yapılırsa secondary sunucularında auto seeding mode manual’e çevrilir. Tüm sunucularda auto seeding mod sunucu bazlıdır.
Aşağıdaki yapı üzerinden AG altına bir veritabanı eklersek Secondary sunucusuna database dahil olmaz. Yukarıdaki örneğin aynısı diyebiliriz.


Aşağıdaki komut ile ilgili sunucunun Seeding Mode’u manuel veya otomatik yapılabilir.
USE [master]
GO
ALTER AVAILABILITY GROUP [AG2]
MODIFY REPLICA ON N'S1\TEST' WITH (SEEDING_MODE = MANUAL)
GO
----------------------
USE [master]
GO
ALTER AVAILABILITY GROUP [AG2]
MODIFY REPLICA ON N'S2\TEST' WITH (SEEDING_MODE = AUTOMATIC)
GO
Kısacası yukarıdaki komut ile seeding mode’u otomatik yapısına alarak database’in kendiliğinden secondary sunucusunda senkron olmasını sağlayabiliriz.
Elimizde bulunan bir database’i primary sunucusunda uzun uzadıya SSMS arayüzünde yapmayıp aşağıdaki komut ile hemen primary sunucusunda AG altına alınabilir. Aşağıdaki komut auto seeding yapısı ile veritabanını secondary sunucuya geçirmektedir. Disk yolları aynı değilse bile default disk yollarında oluşmaktadır.
ALTER AVAILABILITY GROUP [AG2] ADD DATABASE DB10;
Yukarıdaki komut ile DB10 database’i primary sunucusuna dahil edilir. Aşağıdaki resimde ise secondary sunucusunda senkron olduğunu gözlemlemiş oluruz. Bunun sebebi AG properties ekranından iki replicamızın seeding modunun otomatik olmasından dolayıdır.


Seeding mode manuel durumda olsa bile YENIDB database’i AG23 altına eklenmiş olduğu görülmektedir. Zaten AG altındaki tüm dbler secondary sunucusunda görünür. Manuel bir şekilde primary sunucusundaki AG altına alınırken database’imiz hata mesajı ile karşılaşırsak AG’mize database oluşturma yetkisi verilmesi gerekmektedir. Bunun için aşağıdaki komut kullanılmaktadır.
ALTER AVAILABILITY GROUP [AG23]
GRANT CREATE ANY DATABASE;
GO

Secondary sunucusunda AG altına dahil etme işlemini makalenin başında bahsettiğim gibi seeding mode’u ya otomatiğe çekeriz yada elle manuel bir şekilde restoring modda bırakıp dahil etme işlemlerimizi yapabiliriz.
Başka bir makalede görüşmek dileğiyle…
“Allah’tan kulları içinde ancak ilim sahibi olanlar korkar.” Fâtır sûresi – 28