Merhaba
Üç bölümlük yolculuğumuzun sonuna geldik. Bölüm 3‘te iki Node’lu, Witness destekli DAG iskeletimizi kurmuştuk; ancak henüz hiçbir veritabanının ikinci bir kopyası yoktu. Bu son bölümde DAG’i asıl amacına kavuşturuyoruz: Veritabanı kopyalarını oluşturacak, seeding sürecini izleyecek, planlı geçiş (switchover) yapacak, sunucu bakım moduna alma ve günlük yönetim işlerini, ardından da en sık karşılaşılan sorunların çözümlerini ele alacağız.
Bölüm 3‘ün sonunda Test-ReplicationHealth çalıştırdığımızda DatabaseRedundancy ve DatabaseAvailability kontrollerinin *FAILED* döndüğünü (Redundancy Count: 1. Expected Redundancy Count: 2 ... does not have enough copies configured) hatırlıyor musunuz? Bunun nedeni, veritabanımızın henüz tek kopyaya sahip olmasıydı. İşte bu bölümde ekleyeceğimiz ikinci kopya, tam olarak o eksikliği kapatacak ve bu iki kontrolü Passed durumuna geçirecek.
Adım 1: Veritabanı Kopyası Ekleme
Senaryomuzda W25EXCNOD1 üzerinde aktif olan bir DB01 veritabanı olduğunu varsayalım. Bu veritabanının pasif bir kopyasını W25EXCNOD2 üzerine ekleyerek yüksek erişilebilirlik (High Availability) hale getireceğiz.
Add-MailboxDatabaseCopy -Identity "DB01" `
-MailboxServer "W25EXCNOD2" `
-ActivationPreference 2
Parametreleri açıklayalım:
| Parametre | Açıklama |
|---|---|
-Identity |
Kopyası oluşturulacak veritabanı (DB01). |
-MailboxServer |
Pasif kopyanın barınacağı sunucu (W25EXCNOD2). |
-ActivationPreference |
Aktive edilme önceliği. Aktif kopya 1, ilk pasif kopya 2 olur. |
Komut çalıştırıldığında Exchange, otomatik olarak bir Seeding (tohumlama) işlemi başlatır: DB01‘in tam bir kopyası W25EXCNOD2‘ye aktarılır ve ardından Continuous Replication devreye girerek kopyayı güncel tutmaya başlar. Büyük veritabanlarında ilk Seeding işlemi uzun sürebilir; bu trafik, Bölüm 3‘te ayırdığımız replikasyon ağı üzerinden akar.
Birden fazla veritabanınız varsa (DB02, DB03…), her biri için aynı işlemi tekrarlayarak karşılıklı kopyalar oluşturursunuz; Örneğin DB02‘nin aktifini W25EXCNOD2‘de tutup pasif kopyasını W25EXCNOD1‘e ekleyerek yükü dengeleyebilirsiniz.
Adım 2: Kopya Durumunu ve Seeding’i İzleme
Kopya eklendikten sonra durumu izlemek için:
Get-MailboxDatabaseCopyStatus -Identity "DB01\*" | Format-Table Name,Status,CopyQueueLength,ReplayQueueLength,ContentIndexState -AutoSize
Bu çıktıda önemli alanlar şunlardır:
| Alan | Anlamı | İdeal Değer |
|---|---|---|
| Status | Kopyanın durumu | Mounted / Healthy |
| CopyQueueLength | Kopyalanmayı bekleyen log sayısı | 0’a yakın |
| ReplayQueueLength | Oynatılmayı bekleyen log sayısı | 0’a yakın |
| ContentIndexState | İçerik indeksi durumu | Healthy |
Aktif kopyanın durumu Mounted, sağlıklı pasif kopyanın durumu ise Healthy olmalıdır. Seeding devam ederken kopya geçici olarak Seeding veya Initializing durumunda görünebilir; işlem bitince Healthy’ye döner.
Adım 3: Switchover (Planlı Geçiş)
Artık DB01’in iki kopyası var. Planlı bir bakım öncesi ya da test amacıyla, aktif kopyayı elle W25EXCNOD2‘ye taşıyabiliriz. Bu, plansız bir failover değil; kontrollü bir Switchover‘dır.
Tek bir veritabanının aktif kopyasını taşıma (database switchover):
Move-ActiveMailboxDatabase "DB01" -ActivateOnServer "W25EXCNOD2"
Bir sunucudaki tüm aktif veritabanlarını diğerine taşıma (server switchover) – Örneğin W25EXCNOD1‘i tamamen boşaltmak için:
Get-MailboxDatabase -Server "W25EXCNOD1" | ForEach-Object {Move-ActiveMailboxDatabase $_.Name -ActivateOnServer "W25EXCNOD2"}
İşlem sonrası aktif kopyanın gerçekten taşındığını Get-MailboxDatabaseCopyStatus ile doğrulayabilirsiniz.
Adım 4: Sunucu Bakım Modu (Maintenance Mode)
Bir DAG üyesine güncelleme (CU/SU) yüklemeden ya da yeniden başlatmadan önce, o sunucuyu düzgün biçimde bakım moduna almak gerekir. Bu, aktif veritabanlarını başka üyeye taşır ve sunucunun failover hedefi olmasını engeller. Exchange bunun için hazır scriptler sunar; bu scriptler Exchange kurulum dizinindeki Scripts klasöründe bulunur.
Sunucuyu bakım moduna alma:
cd $env:ExchangeInstallPath\Scripts
.\StartDagServerMaintenance.ps1 -ServerName "W25EXCNOD1"
Bakım işlemleri bittikten sonra sunucuyu normale döndürme:
cd $env:ExchangeInstallPath\Scripts
.\StopDagServerMaintenance.ps1 -ServerName "W25EXCNOD1"
Adım 5: Aktif Veritabanlarını Yeniden Dengeleme
Bir failover ya da bakım sonrası aktif kopyalar tek bir sunucuda toplanmış olabilir. Aktivasyon önceliğine (ActivationPreference) göre dengeyi yeniden kurmak için yine hazır bir script kullanılır:
cd $env:ExchangeInstallPath\Scripts
.\RedistributeActiveDatabases.ps1 -DagName "DAG01" `
-BalanceDbsByActivationPreference `
-ShowFinalDatabaseDistribution
Bu, aktif kopyaları tanımladığınız tercih sırasına göre üyeler arasında eşit şekilde dağıtır.
Adım 6: Sık Karşılaşılan Sorunlar ve Çözümleri
DAG yönetiminde en sık karşılaşılan durumlar ve müdahale yöntemleri:
| Belirti | Olası Neden | Çözüm |
|---|---|---|
| Failed kopya | Log oynatma / disk / replikasyon sorunu | Update-MailboxDatabaseCopy ile yeniden seed |
| CopyQueueLength yüksek | Replikasyon ağı darboğazı / ağ sorunu | Replikasyon ağını ve bağlantıyı kontrol edin |
| ContentIndexState: Failed | Arama indeksinde bozulma | İndeksi yeniden oluşturun / kopyayı reseed edin |
| Witness Failed | Witness paylaşımı / izin sorunu | Exchange Trusted Subsystem izinlerini ve paylaşımı kontrol edin |
| Kopya Suspended | Elle askıya alınmış | Resume-MailboxDatabaseCopy ile devam ettirin |
Bozulmuş bir kopyayı yeniden tohumlama (reseed):
Update-MailboxDatabaseCopy -Identity "DB01\W25EXCNOD2" -DeleteExistingFiles
Askıya alınmış bir kopyayı devam ettirme:
Resume-MailboxDatabaseCopy -Identity "DB01\W25EXCNOD2"
Genel sağlık kontrolü (her üyede düzenli çalıştırmakta fayda var):
Test-ReplicationHealth -Identity "W25EXCNOD1"
Test-ReplicationHealth -Identity "W25EXCNOD2"
Native Data Protection ve Safety Net
Serinin ilk bölümünde DAG bir yedekleme çözümü değildir demiştik. Ancak Exchange, birden fazla veritabanı kopyası, Lagged Copy ve Safety Net özelliğini bir araya getirdiğinizde klasik yedeğe gerek duymadan veriyi koruyabileceğiniz bir yaklaşım sunar; buna Native Data Protection denir.
Safety Net, teslim edilen e-postaların bir kopyasını transport seviyesinde geçici olarak saklayan bir mekanizmadır. Bir failover sırasında henüz replikasyona uğramamış son mesajlar kaybolursa, Safety Net bunları otomatik olarak yeniden teslim ederek veri kaybını önler. Yani Continuous Replication’ın son saniye boşluklarını Safety Net kapatır.
Native Data Protection yaklaşımını tercih etmek isteyen kurumlar genellikle: en az 3 veritabanı kopyası, bir Lagged Copy ve sağlıklı izleme kurgusuyla ilerler. Yine de birçok kurum, uyumluluk ve arşivleme gereksinimleri nedeniyle geleneksel yedeklemeyi de sürdürmeyi tercih eder. Karar, kurumunuzun risk iştahına ve uyumluluk gereksinimlerine bağlıdır.
Seri Özeti: Baştan Sona DAG
Dört bölümlük bu seride, sıfırdan çalışan bir Exchange Server SE DAG’i baştan sona inşa ettik:
- Bölüm 1: DAG mimarisi, Continuous Replication, Quorum, Witness, Active Manager, Failover/Switchover kavramları.
- Bölüm 2: İşletim sistemi, disk, ağ (MAPI/Replication), Active Directory ve Witness önkoşulları; IP-less DAG yaklaşımı.
- Bölüm 3: Witness hazırlığı,
New-DatabaseAvailabilityGroup, node ekleme, DAG ağ yapılandırması ve doğrulama. - Bölüm 4: Veritabanı kopyaları, seeding, switchover, bakım modu, yeniden dengeleme, sorun giderme ve Native Data Protection.
Genel görünüm: Artık elinizde tek nokta arızalarına dayanıklı, planlı bakımlar sırasında bile kesintisiz posta hizmeti verebilen, izlenebilir ve yönetilebilir bir Exchange Server SE DAG var. Buradan sonraki adım, bu yapıyı düzenli olarak izlemek (Test-ReplicationHealth, Get-MailboxDatabaseCopyStatus), güncellemeleri bakım moduyla uygulamak ve kopya dağılımını dengede tutmaktır.
Başka bir yazımızda görüşmek dileğiyle…

