Exchange 2010 DAG Maintance

When you need to performing maintenance on DAG nodes here is the process you want to go through In my environment I have two nodes in a dag. For more nodes the same process
 
All the commands below are run in an administrative prompt.

Type add first: cd $exscripts and press enter.

Now you are in the Exchange Scripts folder.

Exchange Node 1:
 
Process for running maintenance on exchange database servers
.\StartDagServerMaintenance.ps1 -ServerName <Dag Node 1>

Run maintenance on <Dag Node 1>

When you are finished on Node 1
.\StopDagServerMaintenance.ps1 -ServerName <Dag Node 1>

Exchange Node 2:
.\StartDagServerMaintenance.ps1 -ServerName <Dag Node 2>

run maintenance on <Dag Node 2>

When you are finished on Node 2
.\StopDagServerMaintenance.ps1 -ServerName <Dag Node 2>

When done performing maintenance on one or multiple servers (hopefully one at a time to maintain full database availability for end users!) you can end up with a sub-optimal active database layout, especially if you have a cross-site DAG. To resolve this you have to rebalance the databases based on the priorities set for them upon creation.
 
Rebalance databases across dag
.\RedistributeActiveDatabases.ps1 -DagName <Your DAG Name> -BalanceDbsByActivationPreference -ShowFinalDatabaseDistribution -Confirm:$false

If you get any errors you may have to re-index the search catalog for the passive database. Rather than hunting down which ones need to be fixed you can just fix them all with the custom script I wrote below (or for only the mail servers with issues). When finished running these commands then try to run the maintenance or rebalance scripts again.
 
Fix/Rebuild Search Catalogs
Get-MailboxDatabaseCopyStatus -Server <Dag Node 1> | where {$_.Status -like "Healthy"} | Update-MailboxDatabaseCopy –catalogonly

Get-MailboxDatabaseCopyStatus -Server <Dag Node 2> | where {$_.Status -like "Healthy"} | Update-MailboxDatabaseCopy -catalogonly

Leave a Reply