ESE引擎在加載數據庫文件時,會去檢查數據庫文件的標志。這個標志保留了上次關閉數據庫的狀態,當狀態為正常關閉說,系統將直接加載該數據庫,當數據庫標志為非正常關閉時,系統將先進行一個軟恢復過程(你可以在事件里看到它),然后再加載。
那么,正常關閉和非正常關閉有什么區別呢?一個正常關閉的數據庫,表示所有的日志信息都已經正確的寫入數據庫了。反之一個非正常關閉的數據庫,則表示至少有一部分數據未能正確的從日志寫入數據庫。要注意的是,非正常關閉的數據庫并不等于已經被破壞的數據庫。只表示有數據沒有提交到數據庫文件。
使用ESEUTIL /MH命令可以看到數據庫的該狀態,其中的STATE字段標記的就是這個狀態,“Clean shutdown”表示數據庫正常關閉。當系統加載處于非正常關閉的數據庫時,就會根據檢查點文件確定日志文件的位置,并做重放操作。當檢查點文件丟失或損壞時,系統將從最早的日志文件開始處理。有的時候,系統不能自動的修復數據庫,這時我們也可以用“ESEUTIL /R”命令手工的恢復處于非正常關閉狀態的數據庫。強烈建議在系統異常關閉后執行此命令。在執行前最好前確定數據庫文件的狀態確實為非正常關閉,不要對正常關閉的數據庫執行該恢復命令!
由此可見,EXCHANGE系統對數據庫有自我修復能力,能確保系統在發生意外后恢復正確的狀態。但這并不是說我們可以隨意的關閉系統,仍要UPS等必要的保護措施。關于具體的Exchange數據災難恢復方法,請閱讀我另一篇網志《Exchange數據庫災難恢復》。
六、關于M盤
在EX2000里,有一個M盤的映射。這個映射只是提供開發人員通過API訪問郵箱和郵件用的。因此對M盤的手工操作都可能帶來數據庫的破壞,請注意,另外,有一種觀點認為備份了M盤就備份了郵件,這是絕對錯誤的。M盤雖然是數據庫的映射,但已經去掉了很多的關聯和內在聯系。因此備份M盤是不能恢復數據庫的。所有的Exchange管理員必須按規定認真的備份系統狀態和SG。切不可偷懶哦,偷懶的最終結果是讓你加倍的付出時間去拯救數據。
看到這里,你還認為日志文件是多余的嗎?Exchange管理員,趕快取消循環日志,建立健全的備份計劃吧,為了你的薪水或者提高在老板心里的重要度,學會備份,很重要!關于數據備份的種類與方法,如果你想做一個合格的系統管理員,那就該多花一點時間在這上面。。。