Sun Java System Calendar Server 管理指南 |
第 14 章
管理 Calendar Server 資料庫本章說明如何管理 Sun Java System Calendar Server 資料庫,包括以下小節:
如需有關備份及復原行事曆資料庫的資訊,請參閱第 15 章 「備份與復原 Calendar Server 資料」。
Calendar Server 資料庫檔案依預設,會在以下目錄中建立與維護 Calendar Server 資料庫檔案 (以及 cld_cache 和 ldap_cache 目錄):
cal_svr_base/var/opt/SUNWics5/csdb
如果願意,您可以透過執行 Calendar Server 配置程式 (csconfigurator.sh) 來指定其他目錄。如需有關此配置程式的資訊,請參閱第 3 章 「配置 Calendar Server」。
表格 14-1 說明行事曆資料庫檔案:
表格 14-1 Calendar Server 資料庫檔案
檔案
說明
ics50calprops.db
所有行事曆的行事曆特性。包括行事曆 ID (calid)、行事曆名稱、存取控制清單 (ACL) 及所有者。
ics50events.db
所有行事曆的事件。
ics50todos.db
所有行事曆的待辦事項 (工作)。
ics50alarms.db
所有事件和待辦事項 (工作) 的警示。
ics50gse.db
群組排程引擎 (GSE) 之排程請求的佇列。
ics50journals.db
行事曆的日誌。在目前發行版本中未實現日誌。
ics50caldb.conf
資料庫版本識別碼。
ics50recurring.db
週期性事件。
ics50deletelog.db
刪除的事件和待辦事項 (工作)。另請參閱第 16 章 「管理刪除日誌資料庫」。
csdb 公用程式透過行成以下三個邏輯資料庫來管理 Calendar Server 資料庫檔案:
使用 csdb 來管理行事曆資料庫本小節說明如何使用 csdb 公用程式執行以下功能:
若要執行 csdb 公用程式,您必須以具有系統 (執行 Calendar Server 的系統) 管理權限的使用者身份登入。如需更多資訊,請參閱附錄 D 「Calendar Server 指令行公用程式參照」。
指定目標資料庫
csdb 公用程式的 -t 選項可讓您指定目標資料庫:
如果您不包含 -t 選項,除 check 和 rebuild 指令僅在行事曆資料庫中作業之外,csdb 將在所有三個資料庫中作業。
檢視行事曆資料庫狀態
若要檢視行事曆資料庫的狀態,請使用 csdb 公用程式 list 指令。Calendar Server 可以執行,也可以停止。
請使用 -t 選項指定目標資料庫 (caldb、sessdb 或 statdb);否則,csdb 將在所有三個資料庫中作業。
例如,若要檢視所有資料庫的資料庫狀態和統計資料:
csdb list
若要在詳細模式下檢視有關目前目錄中行事曆資料庫的資訊:
csdb -v -t caldb list
回復損毀的資料庫
用於回復損毀的資料庫的公用程式視資料庫的類型而定:
- 若要回復損毀的行事曆資料庫 (caldb),請使用 csdb 公用程式的 check 和 rebuild 指令,如檢查與重建行事曆資料庫中所說明。
刪除行事曆資料庫
若要刪除行事曆資料庫,請使用 csdb 公用程式 delete 指令。必須停止 Calendar Server。
使用 -t 選項指定目標資料庫 (caldb、sessdb 或 statdb);否則,csdb 將刪除所有三個資料庫。
例如,若要刪除行事曆資料庫:
csdb -t caldb delete
csdb 公用程式會在刪除資料庫之前發出警告。
偵測資料庫損毀以及從中回復可導致行事曆資料庫損毀的原因有以下多種:系統資源競爭、硬體故障、應用程式錯誤、資料庫故障,當然,還有人為的錯誤。本小節說明如何偵測行事曆資料庫損毀以及如何回復損毀的資料庫,包括:
將資料遺失減到最少
無論回復程序有多好,都最好提早偵測資料庫損毀,以將資料遺失減到最少。若要偵測可能的資料庫損毀,請遵循以下建議進行:
- 使用一個公用程式 (例如 csbackup、Sun StorEdge Enterprise Backup 軟體或 Legato Networker®,每天備份資料庫。如需更多資訊,請參閱第 15 章 「備份與復原 Calendar Server 資料」。
- 監視 Calendar Server 日誌檔 (包括警示日誌),以發現任何可能指出資料庫損毀的錯誤訊息。如需有關日誌檔的資訊,請參閱監視 Calendar Server 日誌檔。
- 使用 csmonitor 公用程式監視 Calendar Server,並在偵測到問題 (例如存在多個異動日誌檔或行事曆資料庫磁碟空間不足) 時透過電子郵件警示管理員。如需更多資訊,請參閱 csmonitor。
- 切勿移除資料庫目錄中的任何異動日誌檔。異動日誌檔包含異動更新 (增加、修改或刪除),移除它們可能會損毀行事曆資料庫並且無法回復。
檢查與重建行事曆資料庫
csdb 公用程式指令包括以下指令,用來檢查行事曆資料庫並在必要時重建行事曆資料庫 (caldb):
請在發生任何可能導致資料庫問題的事件之後執行 check 指令 (及 rebuild 指令,如果必要)。例如,如果您的站點遇到電源故障,請執行 check 指令以決定是否發生了任何資料庫損毀。
csdb 公用程式還包括用來回復損毀階段作業或統計資料庫的 recover 指令。如果您的行事曆資料庫發生損毀,請使用 check 與 rebuild,而不要使用 recover。
檢查行事曆資料庫是否損毀
check 指令掃描行事曆資料庫,並檢查行事曆特性 (calprop) 事件和待辦事項 (工作) 是否損毀。如果 check 指令找到無法解決的不一致情況,它會在輸出中報告該情況。
您應該定期地執行 check 指令,以檢查您的行事曆資料庫有沒有不一致性。例如,考量在每次資料庫備份之後執行 check。然而,如果您已經知道損毀了行事曆資料庫,則無需執行 check 指令。請繼續進行並重建損毀的資料庫。
檢查行事曆資料庫是否損毀
- 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
- Calendar Server 可以執行,也可以停止;然而,如果可能,請停止 Calendar Server。
- 如果您尚未建立行事曆資料庫的複本,請建立複本。僅複製資料庫 (.db) 檔案。您無需複製任何共用 (__db.*) 檔案或日誌 (log.*) 檔案。
- 移至 cal_svr_base/opt/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,輸入:
cd /opt/SUNWics5/cal/sbin
- 在行事曆資料庫的複本中執行 check 指令:
./csdb check dbdir > /tmp/check.out 2>&1
如果您未指定 dbdir,check 將使用目前目錄中的資料庫。
check 指令可產生大量資訊,因此請考量將所有輸出 (包括 stdout 和 stderr) 重新導向至一個檔案 (如範例所示)。
- check 已完成時,請複查輸出檔案。如果您的資料庫發生損毀,請執行 rebuild 指令。
重建行事曆資料庫
rebuild 指令掃描行事曆資料庫,並檢查行事曆特性 (calprop) 事件和待辦事項 (工作) 是否損毀。如果 rebuild 指令找到不一致性,它會在 cal_svr_base/opt/SUNWics5/cal/sbin/rebuild_db 目錄中產生重建行事曆資料庫 (.db 檔案)。
不帶有 -g 選項的 rebuild 指令重建除群組排程引擎 (GSE) 資料庫之外的所有資料庫。如果還要重建 GSE 資料庫,請包含 -g 選項。
若要決定 GSE 資料庫是否有任何項目,請執行 csschedule -v list 指令,然後使 GSE 在您執行 rebuild 指令之前完成那些項目的處理。
重建行事曆資料庫
- 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
- 停止 Calendar Server。
- 如果您尚未建立行事曆資料庫的複本,請建立複本。複製資料庫 (.db) 檔案和日誌 (log.*) 檔案。您無需複製任何共用 (__db.*) 檔案。
- 移至 cal_svr_base/opt/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,輸入:
cd /opt/SUNWics5/cal/sbin
注意如果 sbin 目錄的磁碟空間不足,請在其他目錄中執行 rebuild 指令。
- 在行事曆資料庫的複本中執行 rebuild 指令:
./csdb rebuild /tmp/db /tmp/
如果您未指定資料庫目錄,rebuild 將使用目前目錄中的資料庫。/tmp/ 參數指定重建資料庫的目標目錄。
如果還要重建 GSE 資料庫,請包含 -g 選項。
rebuild 指令可產生大量資訊,因此請考量將所有輸出 (包括 stdout 和 stderr) 重新導向至一個檔案。
- rebuild 已完成時,請複查 rebuild.out 檔案中的輸出。如果重建成功,rebuild.out 檔案中的最後一行應該是:
Calendar database has been rebuilt
- 驗證在先前步驟中的重建成功之後,請從 rebuild_db 目錄將重建資料庫 (.db) 檔案複製到您的產品資料庫。
- 如果您有任何損毀資料庫的共用 (__db.*) 檔案或日誌 (log.*) 檔案,請將其移至其他目錄。
- 重新啟動 Calendar Server。
使用傾印和載入程序回復行事曆資料庫
如果 csdb rebuild 指令失敗,則下一個步驟為使用傾印和載入程序嘗試回復損毀的資料庫。傾印和載入程序使用 Berkeley 資料庫 db_dump 和 db_load 公用程式,Calendar Server 在以下目錄中提供這些公用程式:
cal_svr_base/opt/SUNWics5/cal/tools/unsupported/bin
db_dump 公用程式使用與 db_load 公用程式相容的格式,來讀取資料庫檔案並將資料庫項目寫入至輸出檔案。
如需有關 db_dump 和 db_load 公用程式的文件,請參閱 Sleepycat Software 網站:
http://www.sleepycat.com/docs/utility/index.html
您使用 db_dump 和 db_load 公用程式回復資料庫成功與否取決於您資料庫的損毀程度。在成功地回復資料庫之前,您可能需要嘗試多個 db_dump 選項。然而,如果您的資料庫嚴重損毀,回復也許是不可能的,您可能需要復原至資料庫的最後一個完好備份。
行事曆資料庫版本
在執行傾印和載入程序之前,行事曆資料庫必須為 Berkeley DB 3.2.9 版,或更高版本。如果您的版本是舊版本,請首先執行 cs5migrate 公用程式以對您的行事曆資料庫進行升級。
如需 cs5migrate 的最新版本,請致電 Sun 技術支援人員。
執行傾印和載入程序
- 在 Solaris 作業系統上,以執行 Calendar Server 時所用的使用者與群組身份登入,例如 icsuser 與 icsgroup,或以超級使用者 (root) 身份登入。
- 如有必要,請停止 Calendar Server。
- 使用一個公用程式 (例如 csbackup、Sun StorEdge Enterprise Backup 軟體或 Legato Networker® 備份損毀的資料庫。如需更多資訊,請參閱第 15 章 「備份與復原 Calendar Server 資料」。
- 使用 db_dump 公用程式傾印每個損毀的資料庫檔案。資料庫檔案包括 ics50calprops.db、ics50journals.db、ics50alarms.db、ics50events.db、ics50todos.db 和 ics50gse.db。
請依次使用以下選項執行 db_dump,直到已回復您的資料庫 (或直到您確定無法回復資料庫) 為止:
- 使用 db_load 公用程式將輸出檔案載入至新的資料庫檔案。例如:
db_load new.ics50events.db < ics50events.db.txt
注意如果 db_load 報告的鍵值或資料項目為奇數,請從步驟 4 編輯 db_dump 輸出檔案,並移除奇數鍵值或資料項目。然後再次執行 db_load。
- 使用 csdb rebuild 指令重建回復的資料庫檔案,如重建行事曆資料庫中所說明。
重建已完成時,請複查輸出檔案中的輸出。如果重建成功,rebuild.out 檔案中的最後一行應該是:
Calendar database has been rebuilt
如果 csdb rebuild 指令失敗,請返回至步驟 4,並使用下一個 db_dump 選項 (-r 或 -R) 傾印您的資料庫。
如果 db_dump -R 選項未回復損毀的資料庫,請與 Sun Microsystems 技術支援代表或銷售客戶代表聯絡,以尋求援助。您可能需要復原至資料庫的最後一個完好備份。
最佳慣例:行事曆儲存管理與維護每天執行以下預防程序: