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 exchange powershell 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