Sun Java System Messaging Server 6 2005Q4 管理指南

備份和復原郵件儲存

郵件儲存備份和復原是最常見且最重要的管理作業之一。它涵蓋了郵件儲存中所有郵件和資料夾的備份。您必須為自己的郵件儲存實作備份和復原策略,以確定在以下問題發生時不會遺失資料:

您可以使用指令行公用程式 imsbackupimsrestore,或是使用 Legato NetworkerTM 的整合解決方案來執行郵件儲存的備份和復原。

Messaging Server 提供單一副本備份程序。不管特定郵件同時為多少個使用者資料夾所共同持有,在備份時只會使用第一個找到的郵件檔案來製作一個備份。第二個郵件副本將做為第一個郵件檔案名稱的連結進行備份,以下亦同。imsbackup 維護一個含有所有郵件的雜湊表,其使用郵件檔案的裝置和 I 節點做為索引。但是,此方法在復原資料時還有一些額外功能。如需更多資訊,請參閱部分復原的注意事項


備註 –

也可以透過備份所有的郵件檔案和目錄執行郵件儲存備份和復原。請參閱郵件儲存災難備份與回復


本節包含以下小節:

建立電子信箱的備份策略

備份策略取決於多個因素,如:

業務尖峰負荷

在為系統排程備份時,您需要將尖峰業務負載納入考量,因為這可能降低系統在尖峰時刻的負載。例如,最好將備份排程到清晨執行,如清晨 2:00。

完整備份和增量備份

增量備份 (請參閱增量備份) 將掃描儲存有無變更資料並僅備份已變更的資料。完整備份將備份整個郵件儲存。您需要決定系統要多久執行一次完整備份或增量備份。您可以將增量備份做為每日維護程序的一部分執行,而完整備份需要每週執行一次。

平行或串列備份

當使用者資料儲存於多個磁碟上時,如果您願意,可以平行備份使用者群組。根據系統資源,平行備份可以加快整個備份程序的速度。但是,如果您想儘量減少備份對系統效能的影響,則串列備份也許比較合適。平行備份與串列備份之間的抉擇受許多因素影響,包括系統負荷、硬體配置以及有多少磁帶機可用等。

建立備份群組

備份群組是由常規表示式定義的任意一組使用者電子信箱。透過將使用者電子信箱部署於備份群組中,您可以定義更靈活的備份管理。

例如,您可以建立三個備份群組:第一個群組包含的使用者 ID 都是以從 A 到 L 之間的字母開頭;第二個群組包含的使用者 ID 則是以從 M 到 Z 之間的字母開頭;第三個群組包含的使用者 ID 都是以數字開頭。管理員可以使用這些備份群組以平行方式備份電子信箱,或是一天只備份某幾個群組,其他群組則改日再備份。

請注意幾個關於備份群組的事項:

  1. 它們是由郵件使用者任意組成的虛擬群組。他們無法準確地對映至郵件儲存目錄 (圖 18–1),儘管表面上已準確對映。

  2. 它們是由管理員使用 UNIX 常規表示式定義的。

  3. 在配置檔案 msg_svr_base/config/backup-groups.conf 中定義常規表達式。

  4. 當在 imsbackupimsrestore 中參照備份群組時,它們使用的路徑格式為:/partition_name/backup_group

backup-groups.conf 的格式如下:


group_name=definition
group_name=definition
.
.
.

使用前段所述的範例,以下定義將用於建立三個備份群組:


groupA=[a-l].*
groupB=[m,-z].*
groupC=[0-9].*

現在您可以在多個層級上使用 imsbackupimsrestore。您可以使用備份指令備份/復原整個郵件儲存:

imsbackup -f device /

若要備份 groupA 中所有使用者的全部電子信箱,請使用以下指令:

imsbackup -f device /partition/groupA

預設分割區名為 primary

預先定義的備份群組

Messaging Server 包含一個預先定義的備份群組,且不需要為其建立 backup-groups 配置檔案。該群組名為 user;它包含所有使用者。例如,下面將備份 primary 分割區上的所有使用者:

imsbackup -f backupfile /primary/user

Messaging Server 的備份和復原公用程式

為了備份和復原資料,Messaging Server 提供了 imsbackupimsrestore 公用程式。請注意,imsbackupimsrestore 公用程式並不具備一般用途工具 (如 Legato Networker) 中的進階功能。例如,這些公用程式對自動更換磁帶裝置的支援就很有限,而且它們也無法將單一的儲存同時寫入多個裝置。綜合備份仍須透過 Legato Networker 這類多用途的外掛程式才能完成。如需使用 Legato Networker 的更多資訊,請參閱使用 Legato Networker

imsbackup 公用程式

使用 imsbackup,您可以將選取的郵件儲存內容寫入任何序列裝置,包含磁帶、UNIX 管道或一般檔案。您可以使用 imsrestore 公用程式在以後復原整個備份或選取的部分備份。imsbackup 的輸出可傳送至 imsrestore

以下範例會將整個郵件儲存備份到 /dev/rmt/0


imsbackup -f /dev/rmt/0 /

這會將使用者 ID 為 joe 的電子信箱備份到 /dev/rmt/0


imsbackup -f /dev/rmt/0 /primary/user/joe
            

此範例將備份群組 groupA 中定義的所有使用者之全部電子信箱備份到 backupfile (請參閱建立備份群組):


imsbackup -f- /primary/groupA > backupfile
            

增量備份

以下範例將備份從 2004 年 5 月 1 日下午 1:10 到現在儲存的郵件。預設為備份所有郵件,不論這些郵件的日期為何時︰


imsbackup -d 20040501:13100
               

此指令會使用預設的區段化倍數 20。如需 imsbackup 指令的完整語法說明,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」

imsrestore 公用程式

若要從備份裝置復原郵件,請使用 imsrestore 指令。例如,以下指令從檔案 backupfile 中復原 user1 的郵件。

imsrestore -f backupfile /primary/user1

如需 imsbackup 指令的完整語法說明,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」

執行備份時排除垃圾郵件

執行備份作業時,您可以指定要在備份時排除的電子信箱。透過排除積累大量無用郵件的垃圾或垃圾箱電子信箱,可以簡化備份階段作業,減少完成作業所需的時間並最小化儲存備份資料所需的磁碟空間。

若要排除電子信箱,請為 configutil 參數 local.store.backup.exclude 指定值。

您可以指定單一電子信箱或由「%」字元分隔的電子信箱清單。(「%」在電子信箱名稱中是非法字元。)例如,您可以指定以下值︰

Trash

Trash%Bulk Mail%Third Class Mail

在第一個範例中,排除了資料夾 Trash。在第二個範例中,排除了資料夾 TrashBulk MailThird Class Mail

備份公用程式將備份使用者電子信箱中除 local.store.backup.exclude 參數指定的資料夾之外的所有資料夾。

此功能可以與 Messaging Server 備份公用程式、Legato Networker 及協力廠商備份軟體配合使用。

您可以置換 local.store.backup.exclude 設定,並透過在作業期間指定其完整邏輯名稱來備份排除的電子信箱。假設已經排除 Trash 資料夾。您仍可以透過指定某些內容來備份 Trash,例如︰

/primary/user/user1/trash

但是如果您指定

/primary/user/user1

則排除 Trash 資料夾。

部分復原的注意事項

部分復原即僅復原郵件儲存的一部分。全部復原即復原整個郵件儲存。郵件儲存使用單一副本的郵件系統。也就是說,儲存中的任何郵件只會以單一檔案作一份副本。該郵件的任何其他實例 (如將郵件傳送至多個電子信箱的時間) 將以連結的方式儲存在此副本中。因此,在復原郵件時會有些額外的麻煩。例如:

以下範例會展示在執行部分復原時系統會如何處置由多個使用者共用的郵件。假設有三個相同的郵件,分屬 A、B 和 C 三個使用者,如下所示:


A/INBOX/1
B/INBOX/1
C/INBOX/1

範例 1. 在此範例中,系統將執行部分備份和完全復原程序,如下所示:

  1. 備份使用者 B 和 C 的電子信箱。

  2. 刪除使用者 B 和 C 的電子信箱。

  3. 復原步驟 1 中的備份資料。

在此範例中,B/INBOX/1C/INBOX/1 均被指定了新的 I 節點號碼,並且郵件資料被寫入磁碟上的新位置。被復原的郵件只有一個;第二個郵件只是第一個郵件的強制連結。

範例 2. 在此範例中,系統將執行完整備份和部分復原,如下所示:

  1. 執行完整備份。

  2. 刪除使用者 A 的電子信箱。

  3. 復原使用者 A 的電子信箱。

為 A/INBOX/1 指定了一個新的 I 節點號碼。

範例 3. 在此範例中,部分復原可能需要嘗試多次:

  1. 執行完整備份。

    B/INBOX/1C/INBOX/1 均以 A/INBOX/1 連結的方式備份下來。

  2. 刪除使用者 A 和 B 的電子信箱。

  3. 復原使用者 B 的電子信箱。

    復原公用程式會要求管理員先復原 A/INBOX

  4. 復原使用者 A 和 B 的電子信箱。

  5. 刪除使用者 A 的電子信箱 (可選擇的)。


    備註 –

    如果您要確定所有部分復原的郵件均已復原,則可以執行帶有 -i 選項的 imsbackup 指令。如有需要,-i 選項會多次備份每封郵件。

    如果備份裝置是可搜尋式的,(例如:磁碟機或磁帶),imsrestore 將搜尋 A/INBOX/1 所在的位置,並將其復原為 B/INBOX/1。如果備份裝置是不可搜尋式的 (例如:UNIX 管道),imsrestore 將記錄物件 ID 和檔案的相依 (連結) 物件之 ID,然後管理員必須再次呼叫帶有 -r 選項的 imsrestore,以復原遺漏的郵件參照。


復原已增量備份的電子信箱中的郵件

如果您要復原已經增量備份的電子信箱中的郵件,並且該電子信箱存在於您希望復原郵件的伺服器上,則復原郵件僅需要執行簡單的 imesrestore。但是如果您希望復原已經增量備份的電子信箱中的郵件,而電子信箱已不存在,則必須執行其他復原程序。

請使用以下程序之一將郵件復原至郵件儲存伺服器上不存在的電子信箱︰

復原增量備份必須按照這些說明的原因如下︰如果已刪除電子信箱或正在遷移電子信箱,imsrestore 公用程式會使用備份歸檔檔案中儲存的電子信箱唯一識別有效性和郵件唯一識別 (UID) 重新建立該電子信箱。

過去,imsrestore 重新建立刪除的或已遷移的電子信箱時,它會指定新的電子信箱 UID 有效性和新的郵件 UID。在此情況下,具有快取郵件的用戶端必須重新同步化電子信箱 UID 有效性和郵件 UID。用戶端必須再次下載新的資料,這將增加伺服器的工作負荷量。

在新的 imsrestore 運作方式下,仍會同步化用戶端快取,而復原程序透明作業,對效能無負面影響。

如果電子信箱存在,則 imsrestore 指定新的 UID 給已復原的郵件,以便新的 UID 與為現有郵件指定的 UID 保持一致。為確保 UID 一致,imsrestore 會在復原作業期間鎖定電子信箱。但是,因為 imsrestore 現在使用備份歸檔檔案中的電子信箱 UID 有效性和郵件 UID,而不是指定新的 UID 值,所以如果執行增量備份和復原,則 UID 可能會不一致。

如果使用 imsbackup 公用程式的 -d 日期選項執行增量備份,必須多次呼叫 imsrestore 才能完成復原作業。如果已執行增量備份,您必須復原最新的完整備份和所有後續增量備份。

復原作業期間可以將新的郵件投遞至電子信箱,但這樣可能造成郵件 UID 不一致。若要避免 UID 不一致,您需要執行上述動作中的一項。

使用 Legato Networker

Messaging Server 包含可提供使用協力廠商備份工具 (如 Legato Networker) 介面的備份 API。郵件儲存的實體結構和資料格式均被壓縮在備份 API 中。備份 API 將直接與郵件儲存互動。備份 API 將郵件儲存抽象化,轉成備份服務可以理解的邏輯形式。備份服務就使用此郵件儲存的概念形式來儲存和擷取備份物件。

Messaging Server 可提供一個應用程式特定模組 (ASM),此模組可由 Legato Networker 的 saverecover 指令呼叫,以備份和復原郵件儲存資料。然後,ASM 將呼叫 Messaging Server 的 imsbackupimsrestore 公用程式。


備註 –

本節提供有關如何將 Legato Networker 與 Messaging Server 郵件儲存配合使用的資訊。若要瞭解 Legato Networker 介面,請參閱 Legato 說明文件。


Procedure使用 Legato Networker 備份資料

步驟
  1. 建立從 /usr/lib/nsr/imsasmmsg_srv_base/lib/msg/imsasm 的符號連結

  2. 從 Sun 或 Legato 取得 nsrfile 的二進位檔副本,然後將其複製到以下目錄:

    /usr/bin/nsr

    請注意僅在使用舊版 Networker (5.x) 時才需要此操作。如果使用的是 Networker 6.0 及更高版本,nsrfile 會自動安裝在 /usr/bin/nsr 中。

  3. 如果您要依群組來備份使用者,請執行以下步驟:

    1. 按照建立備份群組中的說明建立備份群組

    2. 若要驗證您的配置,請執行 mkbackupdir.sh

      檢查 mkbackupdir.sh 所建立的目錄結構。該結構應與表 18–4 中所顯示的結構類似。

      請注意,如果您未指定 backup-groups.conf 檔案,備份程序將對所有使用者均使用預設備份群組 ALL

  4. /nsr/res/ 目錄中,為您的 save 群組建立一個 res 檔案,以在備份前呼叫 mkbackupdir.sh 程序檔。請參閱表 18–4 以取得範例。


    備註 –

    在早期版本的 Legato Networker 中,save 集名稱有 64 個字元的限制。如果此目錄的名稱加上電子信箱的邏輯名稱 (例如,/primary/groupA/fred),長度超過 64 個字元,則您必須執行 mkbackupdir.sh -p。因此,您在執行 mkbackupdir.sh -p 選項時應使用短路徑名稱。例如,以下指令將在 /backup 目錄下建立備份影像:

    mkbackupdir.sh -p /backup

    重要事項:郵件儲存所有者 (例如inetuser) 必須擁有備份目錄的寫入權限。


    表 18–6 顯示備份群組目錄結構範例。


    /backup/primary/groupA/amy
                          /bob
                          /carly
                   /groupB/mary
                          /nancy
                          /zelda
                   /groupC/123go
                          /1bill
                          /354hut

    以下範例顯示 /nsr/res 目錄中名為 IMS.resres 檔案範例:


    type: savepnpc;
    precmd: "echo mkbackupdir started",
       "/usr/siroe/server5/msg-siroe/bin/mkbackupdir.sh -p /backup";
    pstcmd: "echo imsbackup Completed";
    timeout: "12:00 pm";
    
                         

    現在您便可以按以下方法執行 Legato Networker 介面:

  5. 如有需要,請建立 Messaging Server save 的群組。

    1. 執行 nwadmin

    2. 選取 [自訂] | [群組] | [建立]。

  6. savepnpc 用做備份指令,建立一個備份用戶端:

    1. 將 save 集設定到 mkbackupdir 建立的目錄中。

      對於單一階段作業備份,請使用 /backup

      對於平行備份,請使用 /backup/server/group

      確保您已按照建立備份群組中的定義建立 group

      您還必須設定平行的備份階段作業的數目。

      請參閱使用 Legato Networker 備份資料

  7. 選取 [群組控制] | [啟動],以測試您的備份配置。

    範例。在 Networker 中建立 A 備份用戶端:

    在 Networker 中建立備份用戶端。請從 nwadmin 中選取 [用戶端] | [用戶端設定] | [建立]


    Name: siroe
    Group: IMS
    Savesets:/backup/primary/groupA
       /backup/secondary/groupB
       /backup/tertiary/groupC
             .
             .
    Backup Command:savepnpc
    Parallelism: 4
    
                         

使用 Legato Networker 復原資料

若要回復資料,您可以使用 Legato Networker 的 nwrecover 介面或 recover 指令行公用程式。以下範例將回復使用者 al 的收件匣:

recover -a -f -s siroe /backup/siroe/groupA/a1/INBOX

下一個範例將回復整個郵件儲存:

recover -a -f -s siroe /backup/siroe

使用協力廠商備份軟體 (包括 Legato)

Messaging Server 提供兩個郵件儲存備份解決方案,指令行 imsbackup 和 Solstice Backup (Legato Networker)。對於大型郵件儲存,執行單一 imbackup 來備份整個郵件儲存將花費大量時間。Legato 解決方案支援在多個備份裝置上同時執行備份階段作業。同步備份可以大幅縮減備份時間 (備份速度可達每小時 25GB)。

如果使用其他協力廠商同步運作備份軟體 (例如,Netbackup),您可以使用以下方法來整合您的備份軟體和 Messaging Server。

Procedure使用協力廠商備份軟體 (包括 Legato)

步驟
  1. 將您的使用者分成群組 (請參閱建立備份群組) 並在目錄 msg_svr_base/config/ 下,建立 backup-groups.conf 檔案。


    備註 –

    此備份方案需要額外的磁碟空間。若要同步備份所有群組,磁碟空間必須是郵件儲存容量的兩倍。如果您沒有足夠的磁碟空間,請將使用者分為多個較小的群組,然後一次備份一組群組。例如 group1 至 group5,group6 至 group10。備份後,移除群組資料檔案。


  2. 執行 imsbackup 以將每個群組備份到展示區的檔案中。

    指令為 imsbackup -f <device> /<instance>/<group>

    您可以同時執行多個 imsbackup 程序。例如:


    # imsbackup -f- /primary/groupA > /bkdata/groupA &
    # imsbackup -f- /primary/groupB > /bkdata/groupB & 
    . . .

    imsbackup 不支援大型檔案,如果備份資料超過 2 GB,您就需要使用 -f- 選項將資料寫入 stdout,然後再將輸出導入檔案中。

  3. 使用您的協力廠商備份軟體來備份展示區中的群組資料檔案 (在範例中為 /bkdata)。

  4. 若要復原使用者,請先找出使用者所屬的群組檔案名稱,從磁帶上復原該檔案,然後使用 imsrestore 從資料檔案中復原該使用者。

    請注意,imsrestore 不支援大型檔案。如果資料檔案超過 2GB,請使用以下指令:

    # cat /bkdata/groupA | imsrestore -f- /primary/groupA/andy

備份和復原問題疑難排解

本小節說明常見備份和復原問題及其解決方案。

郵件儲存災難備份與回復

災難指整個郵件儲存的災難性失敗。即郵件儲存伺服器上的所有資料均遺失的情況。完整的郵件儲存災難復原將包括復原以下遺失的資料︰