Calendar Server 將許多資料庫檔案保存在多個目錄中。必須透過實作第 9 章, 配置自動備份中所述的自動備份程序,或透過實作您自己的備份系統來保護資料庫檔案。您可以使用 csdb 公用程式管理資料庫檔案。
本章說明如何使用 csdb 公程式管理 Calendar Server 資料庫,其中包括以下小節:
若要管理資料庫檔案,請使用 Calendar Server 公用程式 csdb。本小節包含以下主題:
行事曆資料庫公用程式 csdb 將資料庫檔案視為三種邏輯資料庫 (群組):
caldb 資料庫由資料庫目錄中的所有 .db 檔案和 _db.* 檔案組成。以下是行事曆資料庫檔案 (以及 cld_cache 與 ldap_cache 子目錄) 的預設位置:
/var/opt/SUNWics5/csdb
如果願意,您可以在執行 Calendar Server 配置程式 (csconfigurator.sh) 時指定其他目錄。如需有關配置程式的資訊,請參閱第 2 章, Calendar Server 6.3 軟體的初始執行階段配置程式 (csconfigurator.sh)
下表說明各種行事曆資料庫 (caldb) 檔案:
表 16–1 Calendar Server 資料庫檔案
檔案 |
說明 |
---|---|
ics50calprops.db |
所有行事曆的行事曆特性。包含行事曆 ID (calid)、行事曆名稱、存取控制清單 (Access Control List, ACL) 及所有者。 |
ics50events.db |
所有行事曆的事件。 |
ics50todos.db |
所有行事曆的待辦事項 (工作)。 |
ics50alarms.db |
所有事件和待辦事項 (工作) 的警示。 |
ics50gse.db |
群組排程引擎 (GSE) 之排程請求的佇列。 |
ics50journals.db |
行事曆的日誌。在目前發行版本中未實現日誌。 |
ics50caldb.conf |
資料庫版本識別碼。 |
ics50recurring.db |
週期性事件。 |
ics50deletelog.db |
刪除的事件和待辦事項 (工作)。另請參閱第 18 章, 管理刪除記錄資料庫 |
階段作業資料庫由以下目錄中的所有檔案組成/opt/SUNWics5/cal/lib/admin/session/ 與 /opt/SUNWics5/cal/lib/http/session/
統計資料庫由 counter 目錄中的所有檔案組成:
/opt/SUNWics5/cal/lib/counter/
行事曆資料庫群組。
階段作業資料庫群組。
統計資料庫群組。
如果未包含 -t 選項,csdb 將對所有三個資料庫進行操作。check 與 rebuild 兩個指令只會對行事曆資料庫 caldb 進行操作。
本小節說明如何使用D.8 csdb公用程式執行以下管理工作:
若要執行 csdb 公用程式,您必須以對執行 Calendar Server 的系統具有管理權限的使用者身份登入。如需更多資訊,請參閱附錄 DCalendar Server 指令行公用程式參照。
若要檢視資料庫群組 (caldb、sessdb、statdb) 的狀態,請使用 csdb 公用程式 list 指令。
若要列出資料庫狀態,請:
以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
Calendar Server 可以執行,也可以停止;然而,如果可能,請停止 Calendar Server。
移至 /sbin 目錄。例如,在 Solaris 作業系統上,輸入:
cd /opt/SUNWics5/cal/sbin
對一個或所有資料庫群組執行 list 指令。例如,若要列出所有三個資料庫群組的狀態和統計資料,請執行:
./csdb list
以下代碼顯示範例輸出:
Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Calendar database version: 3.0.0 [BerkeleyDB] Total database size in bytes: 57344 Session database version: 1.0.0 [BerkeleyDB] Total database size in bytes: 0 Counter database version: 1.0.0 [Memory Mapped Files] Total database size in bytes: 118792 |
或者您可以選擇使用詳細模式。例如:
./csdb -v list
以下範例代碼顯示詳細輸出:
Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Calendar database version: 3.0.0 [BerkeleyDB] Total database size in bytes: 57344 Total number of calendars: 2 Total number of events: 0 Total number of tasks: 0 Total number of alarms: 0 Total number of gse entries: 0 Total number of master component entries: 0 Total number of deletelog entries: 0 Total logfile size in bytes: 5779919 Session database version: 1.0.0 [BerkeleyDB] Total database size in bytes: 0 Total logfile size in bytes: 0 Counter database version: 1.0.0 [Memory Mapped Files] Total database size in bytes: 118792 |
或者,使用 -t 選項指定一個目標資料庫群組 (caldb、sessdb 或 statdb)。例如,若要僅檢視行事曆資料庫的資料庫狀態和統計資料,請執行:
csdb -t caldb list
使用 check 指令掃描行事曆資料庫,以檢查行事曆中 (包括行事曆特性 [calprops]、事件和待辦事項 [工作]) 是否發生損毀。如果 check 指令找到無法解決的不一致情況,它會在輸出中報告該情況。
check 指令不檢查警示或群組排程引擎 (Group Scheduling Engine, GSE) 資料庫中是否發生損毀。
若要檢查資料庫是否損毀,請:
以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
Calendar Server 可以執行,也可以停止;然而,如果可能,請停止 Calendar Server。
如果您尚未建立行事曆資料庫的副本,請建立副本。僅複製資料庫 (.db) 檔案。您無需複製任何共用 (__db.*) 檔或記錄 (log.*) 檔。
移至 cal-svr-base/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 指令重建已毀壞的資料庫。
若要回復已損毀的行事曆資料庫 (caldb),請使用 csdb 公用程式 rebuild 指令。rebuild 指令將掃描所有行事曆資料庫,以檢查是否發生損毀。如果 rebuild 指令找到不一致性,它會在 cal-svr-base/SUNWics5/cal/sbin/rebuild_db 目錄中產生重建的行事曆資料庫 (.db 檔案)。
rebuild 指令可產生大量資訊,因此請考量將所有輸出 (包括 stdout 和 stderr) 重新導向至一個檔案。
在以下說明中, rebuild 指令不會重建群組排程引擎 (GSE) 資料庫。
若要重建行事曆資料庫而不重建 GSE 資料庫,請:
以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
停止 Calendar Server。
如果您尚未建立行事曆資料庫的副本,請建立副本。複製資料庫 (.db) 檔案及記錄 (log.*) 檔。您無需複製任何共用 (__db.*) 檔案。
移至 cal-svr-base/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,輸入:
cd /opt/SUNWics5/cal/sbin
如果 sbin 目錄的磁碟空間不足,請在其他目錄中執行 rebuild 指令。
對以行事曆資料庫製成的副本執行 rebuild 指令:
./csdb rebuild /tmp/db /tmp/
如果未指定資料庫目錄,rebuild 指令會使用目前目錄中的
資料庫。在前面的範例中,/tmp/ 參數為重建資料庫指定目標目錄。
請始終使用最新的備份複本重建您的行事曆資料庫。
然而,如果您的資料大量遺失,而您已經定期備份了資料庫並有多個複本可用,請從最新的複本到最舊的複本進行重建。(唯一的缺點是已刪除的行事曆元件將重新出現在重建資料庫中)。
例如,如果您有三組備份行事曆資料庫檔案,分別在目錄 db_0601、db_0615 及 db_0629 中,請按下列順序執行 rebuild 指令:
./csdb rebuild db_0629
然後檢查是否有損毀,如果此備份副本也已毀壞,則在下一個備份副本上執行重建。
./csdb rebuild db_0615
然後檢查是否有損毀,如果此備份副本也已毀壞,則在下一個備份副本上執行重建。
./csdb rebuild db_0601
... etc.
rebuild 指令會將重建的資料庫寫入 cal-svr-base/SUNWics5/cal/sbin/rebuild_db 目錄。
rebuild 完成後,請複查 rebuild.out 檔案中的輸出。如果重建成功,rebuild.out 檔案中的最後一行應為:
Calendar database has been rebuilt |
在驗證已成功完成 rebuild 之後,請將重建的資料庫 (.db) 檔案及作業事件記錄 (log.*) 檔從 rebuild_db 目錄複製到您的生產資料庫。
如果存在任何已毀壞資料庫的共用 (__db.*) 檔案,請將其移至其他目錄。
重新啟動 Calendar Server。
如果您已在所在站點實作群組排程,則重建應該包括 GSE 資料庫。
若要同時重建行事曆資料庫和 GSE 資料庫,請:
透過執行 csschedule -v list 指令判斷 GSE 資料庫中是否有項目,然後讓 GSE 處理完這些項目。
以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
停止 Calendar Server。
如果您尚未建立行事曆資料庫的副本,請建立副本。
複製資料庫 (.db) 檔案及記錄 (log.*) 檔。您無需複製任何共用 (__db.*) 檔案。
移至 cal-svr-base/SUNWics5/cal/sbin 目錄。
例如,在 Solaris 作業系統上,輸入:
cd /opt/SUNWics5/cal/sbin
如果 sbin 目錄的磁碟空間不足,請在其他目錄中執行 rebuild 指令。
對行事曆資料庫的副本執行 rebuild 指令:
./csdb -g rebuild /tmp/db /tmp/
如果您未指定資料庫目錄,rebuild 將使用目前目錄中的資料庫。在前面的範例中,/tmp/ 參數為重建資料庫指定目標目錄。
請始終使用最新的備份複本重建您的行事曆資料庫。
然而,如果您的資料大量遺失,而您已經定期備份了資料庫並有多個複本可用,請從最新的複本到最舊的複本進行重建。(唯一的缺點是已刪除的行事曆元件將重新出現在重建資料庫中)。
例如,如果您有三組備份行事曆資料庫檔案,分別在目錄 db_0601、db_0615 及 db_0629 中,請按下列順序執行 rebuild 指令:
./csdb rebuild db_0629 ./csdb rebuild db_0615 ./csdb rebuild db_0601
然後 rebuild 指令會將重建的資料庫寫入 cal-svr-base/SUNWics5/cal/sbin/rebuild_db 目錄。
rebuild 完成後,請複查 rebuild.out 檔案中的輸出。
如果重建成功,rebuild.out 檔案中的最後一行應為:
Calendar database has been rebuilt |
驗證已成功完成 rebuild 之後,請將重建的資料庫 (.db) 檔案從 rebuild_db 目錄複製到您的生產資料庫。
如果存在任何已毀壞資料庫的共用 (__db.*) 檔案,請將它們移至其他目錄。
重新啟動 Calendar Server。
輸出範例顯示事件資料庫和待辦事項資料庫分別被掃描了兩遍。這不是錯誤。第一次掃描,它會驗證 calprops 資料庫中的資訊,然後再次掃描,以確定可從行事曆資料庫中存取 calprops。
以下範例顯示指令及其產生的輸出:
# ./csdb -g rebuild Building calprops based on component information. Please be patient, this may take a while... Scanning events database... 512 events scanned Scanning todos database... 34 todos scanned Scanning events database... 512 events scanned Scanning todos database... 34 todos scanned Scanning deletelog database... 15 deletelog entries scanned Scanning gse database... 21 gse entries scanned Scanning recurring database... 12 recurring entries scanned Successful components db scan Calendar database has been rebuilt Building components based on calprops information. Please be patient, this may take a while... Scanning calprops database to uncover events... 25 calendars scanned Scanning calprops database to uncover todos... 25 calendars scanned Successful calprops db scan Calendar database has been rebuilt |
若要刪除行事曆資料庫,請使用 csdb 公用程式 delete 指令。必須停止 Calendar Server。
使用 -t 選項指定目標資料庫 (caldb、sessdb 或 statdb);否則,csdb 會同時刪除這三個資料庫。
例如,若要刪除行事曆資料庫:
csdb -t caldb delete
csdb 公用程式會在刪除資料庫之前發出警告。