Sun Java logo     上一页      目录      索引      下一页     

Sun logo
Sun Java System Calendar Server 6 2005Q1 管理指南 

第 16 章
使用 csdb 管理 Calendar Server
数据库

Calendar Server 在多个目录中保留多个数据库文件。您必须通过实现第 10 章“配置自动备份 (csstored)”中所述的自动备份进程或者实现您自己的系统备份来保护数据库文件。可以使用 csdb 实用程序来管理数据库文件。

本章介绍了如何使用 csdb 管理 Calendar Server 数据库,并包含以下各节:


使用 csdb 管理日历数据库

要管理数据库文件,请使用 Calendar Server 实用程序 csdb。本节包含以下主题:

csdb 如何对数据库文件进行分组

日历数据库实用程序 csdb 将数据库文件视为三种逻辑数据库:

日历数据库 (caldb)

caldb 由数据库目录中的所有 .db 文件和 _db.* 文件组成。以下是日历数据库文件(以及 cld_cacheldap_cache 子目录)的默认位置:

/var/opt/SUNWics5/csdb

如果需要,可以在运行 Calendar Server 配置程序 (csconfigurator.sh) 时指定一个不同的目录。有关配置程序的信息,请参阅第 3 章“Calendar Server 配置程序 (csconfigurator.sh)”

表 16-1 介绍了日历数据库 (caldb) 文件:

表 16-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

已删除的事件和待办事件(任务)。请参阅 第 18 章“管理“删除日志”数据库”

会话数据库 (sessdb)

会话数据库由以下目录中的所有文件组成:/opt/SUNWics5/cal/lib/admin/session/
/opt/SUNWics5/cal/lib/http/session/

统计信息数据库 (statdb)

统计信息数据库由 counter 目录中的所有文件组成:

/opt/SUNWics5/cal/lib/counter/

csdb 可以将特定数据库作为目标

csdb 实用程序的 -t 选项允许用户指定目标数据库:

如果没有包含 -t 选项,csdb 实用程序中除 checkrebuild 之外的其他命令将对所有三个数据库执行操作,这两个命令仅对日历数据库执行操作。


csdb 管理任务

本节介绍了如何使用 csdb 实用程序来执行以下管理任务:

列出数据库组的状态

要查看数据库组(caldbsessdbstatdb)的状态,请使用 csdb 实用程序的 list 命令。

要列出数据库的状态,请执行以下步骤:

  1. 以系统管理员身份登录安装了 Calendar Server 的系统。
  2. Calendar Server 可以正在运行或已经停止,但最好停止 Calendar Server。
  3. 转至 /sbin 目录。例如,在 Solaris 操作系统上输入以下内容:
  4. cd /opt/SUNWics5/cal/sbin

  5. 针对一个或所有数据库组运行 list 命令。例如,列出所有三种数据库组的状态和统计信息:
  6. ./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 选项来指定一个目标数据库组(caldbsessdbstatdb)。例如,只查看日历数据库的数据库状态和统计信息:

    csdb -t caldb list

检查日历数据库的损坏

使用 check 命令可以扫描日历数据库中的损坏,包括日历属性 (calprops) 和事件及待办事件(任务)。如果 check 命令发现无法解决的冲突,它将在输出中报告该情况。

check 命令不检查警报或组计划引擎 (GSE) 数据库的损坏。

要检查数据库的损坏,请执行以下步骤:

  1. 以系统管理员身份登录安装了 Calendar Server 的系统。
  2. Calendar Server 可以正在运行或已经停止,但最好停止 Calendar Server。
  3. 备份日历数据库(如果尚未备份)。只需复制数据库 (.db) 文件。无需复制任何共享 (__db.*) 文件或日志 (log.*) 文件。
  4. 转到 cal_svr_base/SUNWics5/cal/sbin 目录。例如,在 Solaris 操作系统上输入以下内容:
  5. cd /opt/SUNWics5/cal/sbin

  6. 对日历数据库副本运行 check 命令:
  7. ./csdb check dbdir > /tmp/check.out 2>&1

    如果没有指定 dbdircheck 将使用当前目录中的数据库。

    check 命令会生成许多信息,所以请考虑将所有输出(包括 stdoutstderr)重定向到一个文件中(如示例中所示)。

  8. 运行 check 命令后,查看输出文件。
  9. 如果数据库已损坏,则可以选择用热备份副本替换它。另外,您可以选择通过运行 rebuild 命令来尝试重新建立已损坏的数据库。请参阅后面的重新建立日历数据库 (caldb)(不包括 GSE 数据库)

重新建立日历数据库 (caldb)(不包括 GSE 数据库)

要恢复已损坏的日历数据库 (caldb),请使用 csdb 实用程序的 rebuild 命令。rebuild 命令将扫描出所有日历数据库中的损坏。如果 rebuild 命令发现冲突,它将在 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目录中生成一个重新建立的日历数据库(.db 文件)。

rebuild 命令会生成许多信息,所以请考虑将所有输出(包括 stdoutstderr)重定向到一个文件中。

在以下说明中,rebuild 命令不会重新建立组计划引擎 (GSE) 数据库。有关将 GSE 数据库包括到重新建立中的说明,请参见重新建立日历数据库(包括 GSE 数据库)

要重新建立不包括 GSE 数据库的日历数据库,请执行以下步骤:

  1. 以系统管理员身份登录安装了 Calendar Server 的系统。
  2. 停止 Calendar Server。
  3. 备份日历数据库(如果尚未备份)。只需复制数据库 (.db) 文件和日志 (log.*) 文件。无需复制任何共享 (__db.*) 文件。
  4. 转到 cal_svr_base/SUNWics5/cal/sbin 目录。例如,在 Solaris 操作系统上输入以下内容:
  5. cd /opt/SUNWics5/cal/sbin

    如果 sbin 目录的磁盘空间不足,请在另一个目录中运行 rebuild 命令。

  6. 对日历数据库副本运行 rebuild 命令:
  7. ./csdb rebuild /tmp/db /tmp/

    如果没有指定数据库目录,rebuild 将使用当前目录中的数据库。在上述示例中,/tmp/ 参数指定重新建立的数据库的目标目录。


    请始终使用最新的备份副本重建日历数据库。

    但是,如果曾丢失大量数据,同时由于定期备份数据库而创建了多个副本,请从最新副本向最旧副本进行重建。(这样做的唯一缺点是已删除的日历组件将重新出现在重建数据库中。)

    例如,如果目录 db_0601db_0615db_0629 中有三组备份日历数据库文件,请按以下顺序运行 rebuild 命令:

    1. ./csdb rebuild db_0629

    然后检查是否损坏。如果此备份副本也已损坏,则在下一个备份副本上运行 rebuild。

    1. ./csdb rebuild db_0615

    然后检查是否损坏。如果此备份副本也已损坏,则在下一个备份副本上运行 rebuild。

    1. ./csdb rebuild db_0601

    ... 等等。

    rebuild 命令将重新建立的数据库写入 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目录。


  8. 运行 rebuild 命令后,查看 rebuild.out 文件中的输出。如果重建成功,rebuild.out 文件中的最后一行应如下所示:
  9. 日历数据库已重建

  10. 验证 rebuild 成功后,将重新建立的数据库 (.db) 文件从 rebuild_db 目录复制到您的生产数据库中。
  11. 如果从损坏的数据库中恢复了任何共享 (__db.*) 文件或日志 (log.*) 文件,请将它们移到其他目录中。
  12. 重新启动 Calendar Server。

重新建立日历数据库(包括 GSE 数据库)

如果您已在您的站点中实现了组计划,则应在重新建立日历数据库时包括 GSE 数据库。

要重新建立日历数据库和 GSE 数据库,请执行以下步骤:

  1. 通过运行 csschedule -v list 命令确定 GSE 数据库是否具有任何条目,如果有,则让 GSE 先处理完这些条目。
  2. 以系统管理员身份登录安装了 Calendar Server 的系统。
  3. 停止 Calendar Server。
  4. 备份日历数据库(如果尚未备份)。只需复制数据库 (.db) 文件和日志 (log.*) 文件。无需复制任何共享 (__db.*) 文件。
  5. 转到 cal_svr_base/SUNWics5/cal/sbin 目录。例如,在 Solaris 操作系统上输入以下内容:
  6. cd /opt/SUNWics5/cal/sbin

    如果 sbin 目录的磁盘空间不足,请在另一个目录中运行 rebuild 命令。

  7. 对日历数据库副本运行 rebuild 命令:
  8. ./csdb -g rebuild /tmp/db /tmp/

    如果没有指定数据库目录,rebuild 将使用当前目录中的数据库。在上述示例中,/tmp/ 参数指定重新建立的数据库的目标目录。


    请始终使用最新的备份副本重建日历数据库。

    但是,如果曾丢失大量数据,同时由于定期备份数据库而创建了多个副本,请从最新副本向最旧副本进行重建。(这样做的唯一缺点是已删除的日历组件将重新出现在重建数据库中。)

    例如,如果目录 db_0601db_0615db_0629 中有三组备份日历数据库文件,请按以下顺序运行 rebuild 命令:

    ./csdb rebuild db_0629
    ./csdb rebuild db_0615
    ./csdb rebuild db_0601

    rebuild 命令然后会将重建数据库写入 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目录。


  9. 运行 rebuild 命令后,查看 rebuild.out 文件中的输出。如果重建成功,rebuild.out 文件中的最后一行应如下所示:
  10. 日历数据库已重建

  11. 验证 rebuild 成功后,将重新建立的数据库 (.db) 文件从 rebuild_db 目录复制到您的生产数据库中。
  12. 如果从损坏的数据库中恢复了任何共享 (__db.*) 文件或日志 (log.*) 文件,请将它们移到其他目录中。
  13. 重新启动 Calendar Server。

重建输出样例

以下示例显示了此命令及其生成的输出:

# ./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


以上样例输出显示了对事件和待办事件数据库扫描了两次。这不是错误。首次扫描是为了验证 calprops 数据库中的信息,再次扫描是为了确保可以从日历数据库访问 calprops。


删除数据库组

要删除日历数据库,请使用 csdb 实用程序的 delete 命令。必须停止 Calendar Server。

请使用 -t 选项指定目标数据库(caldbsessdbstatdb);否则,csdb 将删除所有三个数据库。

例如,可使用以下命令删除日历数据库:

csdb -t caldb delete

删除数据库之前,csdb 实用程序将发出警告。



上一页      目录      索引      下一页     


文件号码:819-1478。版权所有 2005 Sun Microsystems, Inc. 保留所有权利。