İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.



Fırat Boyan 23.12.2021 0

Exchange Server 2019'da DAG Yapısına PowerShell İle Database Ekleme

Exchange Server 2010 sürümünden beri son derece başarılı bir şekilde çalışan DAG (Database Availability Group) mimarisi, kesintisiz bir E-Mail sistemi deneyimi sunmaktadır. Aslında Exchange Server 2007 sürümünde temelleri atılan ancak Exchange Server 2010 sürümü ile ideal yapıya kavuşan DAG, yani aslında LOG replikasyonu, sayesinde Mailbox Server'lar arasındaki eşitleme özelliği sayesinde olası bir sorunda Mailbox Server seviyesinde herhangi bir kesinti olmadan kullanıcılarımız E-Mail'lerine ulaşmaya devam edebilmektedir.

Bu nedenle de özellikle iletişimin yollarınızdan birisi olan E-Mail trafiğinin yönetiminin yapıldığı Exchange Server mimarinizin kalbi olan ve tüm E-Mail verilerinizin tutulduğu Database'lerin yedekliliğinin sağlanması; iş sürekliliğinizi sağlamanız, zaman ve para kayıplarının önüne geçmeniz açısından kritik önem arz etmektedir. Bu makalemde sizlere Exchange Server 2019'da mevcut DAG yapınıza yeni bir Database'in (veri tabanı) nasıl ekleneceğinden bahsediyor olacağım.

1- Aşağıdaki komutla Exchange yapımızdaki DAG yapılandırma bilgilerini çekiyorum.

Get-DatabaseAvailabilityGroup

Exchange DAG

2- Ortamımda tek bir DAG yapılandırması var. Yukarıdaki komutla DAG mimarimizin Member Server'larını görebiliyoruz ancak aşağıdaki komutla da Member Server'ların hangisinin DAG mimarisinde çalışabilir durumda olduğu bilgisini görüntülüyorum.

Get-DatabaseAvailabilityGroup EXCHDAG01 -Status

Exchange DAG

3- Aşağıdaki komutla Exchange yapımızdaki Database'lerin hangisinin aktif kopya, hangisinin pasif kopya olduğu ve hangi Server'larda host edildiği bilgilerini elde ediyorum. Çıkan sonuçta Database'lerin Status bilgisi Healthy ve Mounted olarak ikiye ayrılmaktadır. Healthy, DAG mimarisindeki pasif kopya Database'i; Mounted, DAG mimarisindeki aktif kopya Database'i temsil etmektedir.

Ortamımda bir önceki Exchange Server 2019'da Exchange Management Shell Üzerinden Database Oluşturma isimli makalemde oluşturmuş olduğum MBXSYSDB isimli Database'in de listede yer aldığını, Mounted durumda olduğunu ve Healthy durumda olan pasif kopyalasının olmadığını görebiliyorum.

Get-MailboxDatabaseCopyStatus * | Sort Name | Select Name, Status, ContentIndexState

Exchange DAG

4- Aşağıdaki komutla yukarıdaki komut çıksındaki bilgilerin daha derli toplu bir hali ile sonuç çıktısını elde edebiliriz.

Get-MailboxDatabase | Format-List DatabaseCopies

Exchange DAG

5- Aşağıdaki komutlarla Exchange Server Host Name bilgileri ile Member (üye) bazında Database kopylaları filterli bir şekilde görüntülenebilir. Makalemde 2 adet Member (üye) Exchange Server'ım olduğu için ve doğal olarak tüm Database'lerin her iki sunucuda da aktif ve pasif kopyaları olacağı için çok büyük bir fark görülmeyecek olsa da, daha fazla Member (üye) Exchange Server olan DAG yapılarında belirleyici bir filtreleme olacaktır. Bu çıktıyı almamdaki asıl sebep, DAG içine yer almayan MBXSYSDB isimli Database'in sadece EXCHSRV01 Host Name'li sunucuda yer aldığını, diğer sunucuda böyle bir Database'in olmadğını göstermektedir.

Get-ExchangeServer -Identity EXCHSRV01 | Get-MailboxDatabase | Format-List DatabaseCopies

Exchange DAG
Exchange DAG

6- Aşağıdaki komutla MBXSYSDB isimli Database'in pasif kopyasının ortamımdaki ikinci DAG Member (üye) Exchange Server'ımda oluşmasını sağlıyorum.

Add-MailboxDatabaseCopy -Identity MBXSYSDB -MailboxServer EXCHSRV02 -Verbose –ActivationPreference:2

Exchange DAG

7- MBXSYSDB isimli Database'in pasif kopyasının ortamımdaki ikinci DAG Member (üye) Exchange Server'ımda oluşmasını sağladıktan sonra sıra, Information Store servisinin Restart edilmesine geldi. Aşağıdaki komutla ilgili servisi Restart ediyorum.

Get-Service | Where-Object { $_.DisplayName –ilike “Information Store *” } | Restart-Service

Exchange DAG

8- Aşağıdaki komutla iligli Database'in hangi sunucuda pasif kopya/kopyalarının tutulduğu ve en son hangi tarih ve saatte en son Log dosyasının kopyalandığı bilgisi yer almaktadır. Last Inspection Log Time, sadece Status bilgisi Healthy olan yani pasif kopya Database'lerde tarih ve saat damgasını işlemektedir.

Get-MailboxDatabaseCopyStatus * | ft -AutoSize

Exchange DAG

9- Aşağıdaki komut, Database adı verilen ilgili Database'in hangi sunucuda aktif kopyasının, hengi sunucularda pasif kopyalarının bulunduğu bilgisini vermektedir. Görüldüğü gibi MBXSYSDB isimli Database'im EXCHSRV02 Host Naname'li Exchange Server'ımda pasif kopya durumdadır.

Get-MailboxDatabaseCopyStatus -Db MBXSYSDB

Exchange DAG

10- Aşağıdaki komutla tüm Database'lerin Replication Health bilgilerinin "Passed" yani başarılı durumda olduğunu görüntülüyorum.

Test-ReplicationHealth -Identity EXCHSRV01

Exchange DAG
Exchange DAG

11- Replication Health kontolü sırasında hangi adımların kontrol edilğini detaylıca açıklamak istiyorum.

ClusterService
Cluster servisinin sağlıklı bir şekilde çalışıp çalışmağını kontol eder.

ReplayService
Microsoft Exchange Replication servisinin çalışıp çalışmağını kontol eder.

ActiveManager
Active Manager'ın çalışıp çalışmağını kontol eder.

TasksRpcListener
Tasks RPC Listener servisinin çalışıp çalışmağını ve uzak isteklere cevap verip vermediğini kontol eder.

TcpListener
TCP Listener servisinin çalışıp çalışmağını ve uzak isteklere cevap verip vermediğini kontol eder.

ServerLocatorService
Server Locator servisinin çalışıp çalışmağını ve uzak isteklere cevap verip vermediğini kontol eder.

DagMembersUp
CheckDescription : Verifies that the members of a database availability group are up and running. DAG üye sunucularının UP ve Running durumda olduklarını kontol eder.

MonitoringService
Monitoring WCF Service servisinin çalışıp çalışmağını ve uzak isteklere cevap verip vermediğini kontol eder.

ClusterNetwork
Network'lerin sağlık durumlarını kontrol eder.

QuorumGroup
DAG için kullanılan quorum ve witness'ın sağlık durumlarını kontrol eder.

FileShareQuorum
Witness için kullanılan dizin yolunun erişilebilir olduğunu doğrular.

DatabaseRedundancy
Database'lerin yeterli yedekliliğe sahip olduklarını kontrol eder.

DatabaseAvailability
Database'lerin yeterli erişim düzeyine sahip olduklarını kontrol eder.

DBCopySuspended
Database kopyalarının herhangi birinin 'Suspended' durumda olup olmadıklarını kontrol eder.

DBCopyFailed
Database kopyalarının herhangi birinin 'Failed' durumda olup olmadıklarını kontrol eder.

DBInitializing
Database kopyalarının herhangi birinin 'Initializing' durumda olup olmadıklarını kontrol eder.

DBDisconnected
Database kopyalarının herhangi birinin 'DisconnectedAndHealthy' durumda olup olmadıklarını kontrol eder.

DBLogCopyKeepingUp
Database kopyası için Log kopyalama ve incelemenin, kaynak sunucudaki Log oluşturma işlemine ayak uydurduğunu doğrular.

DBLogReplayKeepingUp
Log kaydı tekrarlama işleminin Log kopyalama ve incelemeye ayak uydurduğunu doğrular.

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar: Fırat Boyan

Adım Fırat Boyan. 1985 yılında Antalya'nın Alanya ilçesinde doğdum. 2008 yılından beri İstanbul'da yaşıyorum. Kıdemli Sistem Mühendisi, Microsft Sertifikalı Eğitmen (MCT) ve İngilizceden Türkçeye ve Türkçeden İngilizceye serbest, Noter Yeminli Tercümanım. 18 yıldır Bilgi Teknolojileri alanında hizmet veriyorum. Şu anda Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum ve Bilgi Teknolojileri alanında eğitim hizmetleri veren Bilge Adam bünyesinde Microsoft Sertifikalı Eğitmen (MCT) olarak Sistem ve Network Uzmanlığı eğitimleri veriyorum. Bunun yanı sıra, kurumsal firmalara BT danışmanlık hizmetleri de vermekteyim. Hakkımda daha fazla bilgi sahibi olmak ve sahip olduğum Microsoft sertifikalarımı incelemek için Hakkımda sayfasını ziyaret edebilirsiniz.

YORUMLAR
Bu makaleye henüz yorum yapılmadı! İlk yorum yapan sen ol.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.

   
   
  750 karakter yazabilirsiniz.
 
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.