DAG (Databases Availability Group) üyesi olan Exchange sunucularınızda gerçekleştirilen bakım işlemleri veya plansız kesintiler sonrasında, Mailbox sunucularınızdaki veritabanları farklı sunucularda çalışıyor olabilir. Bu durumda, veritabanlarınızın eşit bir şekilde dağıtılmasını sağlamak için Microsoft, Exchange Server kurulumuyla birlikte bir PowerShell script’i sunmaktadır.
Exchange Server Bakım Modu (Maintenance Mode) için yazmış olduğumuz rehbere aşağıdaki link üzerinden gidebilirsiniz.
Exchange Server Rebalence Databases Nedir?
Exchange Server’da Cumulative Update işlemi için Exchange sunucuzunu Maintenance Mode aldınız ve bakım işlemleriniz bittiği zaman Exchange Server’da bulunan veritabanlarınızın eşit bir şekilde dağıtılmadığını gördünüz bu işlem için Exchange Server kurulum dizini içerisinde bulunan RedistributeActiveDatabases.ps1 scriptini kullanabilirsiniz. RedistributeActiveDatabases.ps1 Exchange Server dizini içerisinde yer almakta olup, $Exscripts
dizininden erişilebilir. Script, DAG içerisindeki veritabanlarının dağılımını yeniden düzenlemek için kullanılır.
Exchange Server Rebalence Scripti RedistributeActiveDatabases.ps
Exchange Server’da RedistributeActiveDatabases.ps1 scriptini $Exscripts dizininde bulabilirsiniz. Exchange Management Shell üzerinden aşağıdaki komut satırını çalıştırmanız yeterli olacaktır.
$Exscripts
Öncelikle, veritabanları üzerinde herhangi bir değişiklik yapmadan önce, aşağıdaki komut seti ile detaylı bir veritabanı dağıtım raporu oluşturabilirsiniz:
.RedistributeActiveDatabases.ps1 -DagName DAG01 -ShowDatabaseDistributionByServer | ft

Bu komut, mevcut veritabanlarının hangi sunucularda aktif olduğunu gösterir ve bu bilgileri düzenli bir tablo formatında sunar. Daha sonra, eğer veritabanlarını DAG üzerinden dengelemek istiyorsanız, script’i aşağıdaki parametre ile tekrar çalıştırabilirsiniz:
.RedistributeActiveDatabases.ps1 -DagName DAG01 -BalanceDbsByActivationPreference -confirm:$false

Bu komut, her veritabanını, tercih edilen sunucu üzerinde aktif hale getirecek şekilde yeniden yapılandırır.
Exchange Server RedistributeActiveDatabases Scripti ile Kullanılan Parametreler
RedistributeActiveDatabases.ps1 Scripti ile kullanılan diğer parametreler ise aşağıdaki gibidir;
- DagName – Balance işlemi yapmak istediğiniz DAG’ın adını belirtir.
- BalanceDbsByActivationPreference: Script’in, Active Directory sitesine bakılmaksızın, veritabanlarını en çok tercih edilen kopyaya taşımasını sağlar.
- BalanceDbsBySiteAndActivationPreference: Script, her Active Directory sitesindeki etkin veritabanlarını dengelemeye çalışırken, veritabanlarını en çok tercih edilen kopyaya taşımaya çalışır.
- ShowFinalDatabaseDistribution: Yeniden dağıtım tamamlandıktan sonra geçerli veritabanı dağıtımının raporunu görüntüler.
- AllowedDeviationFromMeanPercent – Siteler arasında etkin veritabanlarının izin verilen varyasyonunu belirtir ve yüzde olarak ifade edilir. Varsayılan değer %20’dir. Örneğin, üç site arasında dağıtılmış 99 veritabanı varsa, ideal dağıtım her sitede 33 veritabanı olacaktır. İzin verilen sapma %20 ise, komut dosyası veritabanlarını dengelemeye çalışır, böylece her site bu sayıdan %10’dan fazla veya daha az olmayacaktır. 33’ün% 10’u, 4’e yuvarlanan 3.3’tür. Bu nedenle, komut dosyası her sitede 29 ila 37 veritabanı bulundurmaya çalışır.
- ShowDatabaseCurrentActives: Script, her veritabanının nasıl taşındığını ve şu anda en çok tercih edilen kopyasında etkin olup olmadığını ayrıntılarıyla açıklar.
- ShowDatabaseDistributionByServer – Komut dosyasının, veritabanı dağıtımını gösteren her sunucu için bir rapor oluşturduğunu belirtir.
- RunOnlyOnPAM: Script yalnızca şu anda PAM rolüne sahip olan DAG üyesinde çalıştırılabilir.
- LogEvents: Script, gerçekleştirilen eylemlerin özetini içeren olayları (MsExchangeRepl olayı 4115) günlüğe kaydeder.
- IncludeNonReplicatedDatabases – Etkin veritabanlarının nasıl yeniden dağıtılacağını belirlerken komut dosyasının çoğaltılmamış veritabanlarını (kopyaları olmayan veritabanları) içermesi gerektiğini belirtir. Çoğaltılmamış veritabanları taşınamasa da, çoğaltılan veritabanlarının dağılımını etkileyebilir.
- Confirm– Confirm parametresi, bu komut dosyası çalıştırıldığında varsayılan olarak görünen onay istemini bastırmak için kullanılabilir. Onay istemini bastırmak için -Confirm:$False sözdizimini kullanılması gerekmektedir. Sözdizimine iki nokta üst üste koymanız gerekir. Çok sayıda Posta Kutusu veritabanınız varsa, bu ilginç bir seçenektir, bunu ayarlamazsanız DAG’deki tüm hareketleri her seferinde onaylamanız gerekmektedir.