1. 程式人生 > >Exchange傳輸隊列queue數據庫越來越大怎麽辦?

Exchange傳輸隊列queue數據庫越來越大怎麽辦?

exchange 傳輸隊列 queue

大家好,今天為大家分享一下日常管理中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文件,然後啟動傳輸服務。這樣進行此步操作時要保證當前服務器的傳輸隊列中沒有未投遞的郵件)

我在執行過程中遇到如下問題,我的解決方法是將隊列數據庫文件復制到其他空目錄中,然後再次運行命令進行修復。

技術分享

本文出自 “jialt的博客” 博客,謝絕轉載!

Exchange傳輸隊列queue數據庫越來越大怎麽辦?