Exchange传输队列queue数据库mail.que文件越来越大
大家好,今天为大家分享一下日常管理中Exchange数据库的一些维护操作。我们知道当我发送邮件时邮件都是先到一个Exchange的临时的队列数据库中,然后再提交到用户邮箱中。随着时间的推移队列数据库大小会不断的增加(查看传输队列数据库位置可以查看EdgeTransport.exe.config文件中的QueueDatabasePath和QueueDatabaseLoggingPath指向的路径即为队列数据库和日志所在位置),此时就需要管理员对传输队列数据库进行维护,减小传输队列数据库的大小或者将传输队列数据库移动到其他磁盘。通常引起传输队列数据库大小不断增加的原因可能是发送大量的邮件或存在发送大附件的邮件。
首先,来看看队列数据库的文件结构。其中mail.que存放的是队列消息文件,也就是队列数据库。由于队列数据库是可扩展存储引擎 (ESE) 数据库,所有有日志检查点文件.chk。.log为日志文件。传输队列数据库设计的时候就自动开启了循环日志,已经写入到数据库的日志会自动清除。
当传输队列数据库文件过大有哪些措施:
方法一、重新生成新的传输队列数据库。
方法二、对传输队列数据库进行整理,释放传输队列数据库空白空间。(此方法也适用于传输队列数据库因为大量邮件投递被迫停止,无法启动)
方法一我相信很多人都试过,就是首先将Exchange传输服务停止,然后将目录C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data下的Queue重命名为一个其他名字(例如:Queue.old),然后重新启动传输服务器,这样会重新生成一个信息队列数据库。这样操作之前要保证当前服务器的传输队列中没有还未投递的邮件,为了防止丢失邮件可以使用命令Get-Queue查看一下邮件队列情况。
下面着重分享一下方法二,在进行方法二操作之前首先要明确此方法可以应用于哪些场景:
1)、当传输队列数据库中堆积大量未发送的邮件,导致传输服务无法正常启动。
方法二的具体操作思路是,首先将传输队列数据库复制粘贴到其他备用位置(此时传输服务应处于停止状态),然后对传输队列数据库进行日志重播、磁盘碎片整理和修复等操作,最好将修复完成的队列数据库复制拷贝到队列数据库对应位置替换现有队列数据库文件(对应生产服务器上如果出现问题的服务器传输服务无法启动,又要及时恢复正常邮件收发,又要保证数据不要丢失;此时我们可以先按照方法一恢复正常邮件收发,然后将恢复后的队列数据库复制到另外的Exchange服务器的传输队列数据库,由其他Exchange服务器来负责将未发送的邮件发送出去。此时需要注意的是新Exchange服务器必须和源Exchange服务器的版本保持一致)
下面我分享一个我之前测试的步骤
1、将传输队列数据库复制到临时目录。
2、打开Powershell,使用命令eseutil.exe /mh “队列数据库完整路径”,查看数据库的状态,如果State: Dirty Shutdown,说明数据库处于异常关闭状态,需要进行日志重播和数据库修复。
3、接下来使用命令: esetuil /r trn /d “队列数据库路径” /I “日志文件路径” 对数据库进行日志重播,如果失败,则进行第四步操作。
4、对传输队列数据库进行日志重播失败后(软修复),只能进行硬修复了。使用命令 : eseutil.exe /p “数据库完整路径” /t “临时文件存放目录”
5、接下来使用命令: eseutil.exe /d “数据库路径” /t “临时文件存放路径” 对传输队列数据库进行数据整理,释放空白空间。
6、再次停止传输服务器,将修复后的队列数据库覆盖现有传输队列数据库,然后启动传输服务。(如果传输服务无法启动,需要将C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\queue目录下的其余文件剪切出去,只保留mail.que文件,然后启动传输服务。这样进行此步操作时要保证当前服务器的传输队列中没有未投递的邮件)
我在执行过程中遇到如下问题,我的解决方法是将队列数据库文件复制到其他空目录中,然后再次运行命令进行修复。
转自https://blog.51cto.com/jialt/1957429