在客户环境梳理架构发现,有一些exchange 2013后端服务器负载很高,一部分原因是数据库内用户的活跃度很高,邮箱使用率很高,另部分原因是版本为CU10内容索引的noderunner服务会占用比较大的开销,想进行一些优化,将一些负载较高的BE后端数据库用户迁移到其他负载较低的后端BE去,但是怎么迁移,迁移到哪一个负载低的数据库就比较尴尬,经过各种谷歌搜索整理了一个脚本可以帮助做这个事。
当时exchange建设时为每个数据库都分布了大概500个用户,但每一个邮箱用户的使用情况都是不一样的,管理员也没有办法进行控制,因为是用户层面的行为,就会造成每个BE后端服务器的负载不均衡。
通过一个powershell脚本能够获得到每个数据库的名字、大小以及用户数量并且直接输出成csv比较友好的界面,可以帮助我们进行数据性能的优化
将脚本分享出来希望大家有用,适用于exchange 2013环境,其他版本请自行测试
输出信息如下:
Add-PSSnapin microsoft.exchange*
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
#$MailboxDatabases=Get-MailboxDatabase -Status | select Name,DatabaseSize
$dbs = Get-MailboxDatabase -Status| Where {$_.Recovery -ne $true}
$dbs = $dbs | sort-object name
$output=‘C:\databaseSize.csv‘
$title="databasename,Servername,databasesize,count"
$title>>$output
foreach ($db in $dbs)
{
#Get the mailbox count for the database
$mailboxes = Get-Mailbox -database $db -IgnoreDefaultScope -Resultsize Unlimited -erroraction silentlycontinue
$mbcount = $mailboxes.count
$dbsize=$db| select Server,DatabaseSize
#$databaseSize=$dbsize.DatabaseSize.ToString().Split("GB")[0]
$databaseSize=$dbsize.DatabaseSize.ToBytes()/1024/1024/1024
$message="$($db.name),$($dbsize.Server),$databaseSize,$($mailboxes.count)"
$message>>$output
}