Bu makalede AlwaysOn yapısında oluşturulan bir database’in secondary sunucusuna otomatik olarak oluşturulmasını ele alacağız. Bu işlem genelde küçük databaselerde yapılmaktadır. Gerçek sistemde tercih edilmeyen bir yöntemdir.
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.
Secondary down olduğunda Primary’da log birikir, temizlenemez. Büyük işlemlerde commit/rollback unutulursa log kilitlenir ve log dosyası temizlenemez. Network problemleride log birikmesine sebep olmaktadır.
Eğer ikinci sunucuda primary sunucudaki dosya yolları mevcut değilse, Auto Seeding işlemi dosyaları SQL Server instance’ının varsayılan dizinlerine oluşturur.
Tüm makalelerde yaptığım gibi bir örnek üzerinden konuya değinelim.
Primary sunucumda TEST adından bir database ve bu database altında ISIMLER adında bir tablo oluşturuyorum. Bu tablo içerisine bir isim insert ediyorum ve AlwaysOn yapısına alıyorum ve ikinci sunucumda gözlemliyorum. Amaç bu database ekleme yöntemiyle database secondary sunucusuna ekleniyor mu ve primary sunucuya eklenen kayıt ikinci sunucuda gözlemleye biliyormuyuz.

Şimdi TEST veritabanımı primary sunucusunda AlwaysOn’a dahil edelim.

Full backup almam gerektiğini söylüyor. Backup’ını alıp tekrar Refresh yaptıktan sonra hazır olduğuna dair mesajla karşılaşacağız.

Next deyip bir sonraki aşamaya geçeceğiz. Gelen ekranda connect deyip secondary sunucuya bağlanma işlemini gerçekleştireceğiz.

Gelen ekranda veritabanı boyutu küçük olduğu için Automatic seeding kısmını işaretliyorum ve next deyip bir sonraki aşamaya geçiyorum.

Next next dedikten sonra en sonda create scriptini alıp adım adım çalıştırıyorum.
USE [master]
GO
ALTER AVAILABILITY GROUP [SQLAlways]
MODIFY REPLICA ON N'S2\TEST' WITH (SEEDING_MODE = AUTOMATIC)
GO
--------------------------
USE [master]
GO
ALTER AVAILABILITY GROUP [SQLAlways]
ADD DATABASE [TEST];
GO
ALTER AVAILABILITY GROUP [SQLAlways] GRANT CREATE ANY DATABASE;
GO
GO
--Aşağıdaki script yardımıyla tekrardan manuel’e çekebiliriz.
USE [master]
GO
ALTER AVAILABILITY GROUP [SQLAlways]
MODIFY REPLICA ON N'S2\TEST' WITH (SEEDING_MODE = MANUAL)
Secondary sunucumuzda veritabanımızın AlwaysOn yapısında oluştuğunu görmüş oluyoruz. Select sorgusu çektiğimizde primary sunucusundaki kaydın geldiğini görmüş oluyoruz.

Başarılı bir şekilde AlwaysOn yapımızda verilerimiz çekmiş olduk. Ayrıca AG üzerine sağ tıklayıp properties dedikten sonra alt tarafta bulunan kısımda seeding mode kısmını ayarlayabiliriz. Bu modu otomatik yaptığımızda availability group’a eklenen her veritabanının secondary’si SQL Server tarafından otomatik olarak oluşturuluyor. Bu işlemin yapılabilmesi için primary ve secondary sunucularda data ve log dosyaları için aynı isimde path’lerin olması gerekiyor. İkinci bir secondary sunucu eklendiğinde seeding mode otomatikse primary sunucularındaki database’ler otomatik olarak secondary sunucuya gider. Büyük veritabanlarında sıkıntıya sebep olmaktadır.
Primary sunucusunda olan dosya dizinleri secondary sunucusunda yoksa SQL Server otomatik olarak default data ve log yollarına veritabanını restore işlemi için kullanmaktadır.
Bu makalede Sql Server AlwaysOn yapısında Automatic Seeding yöntemiyle database eklenmesini ele almış olduk. Bir sonraki makalede görüşmek dileğiyle.
“Böyle birine âyetlerimiz okunduğunda sanki kulaklarında ağırlık varmış da onu işitemiyormuş gibi büyüklük taslayarak sırt çevirir. Ona acıklı bir azabı müjdele!”Lokman-7
1 thought on “MSSQL Server AlwaysOn’a Automatic Seeding Database Ekleme”