![]() | |
Sun Java System Calendar Server 6 2005Q1 管理指南 |
第 4 章
数据库迁移实用程序如果您拥有的是早期版本的 Calendar Server(5.11 或更早版本),则在安装 Calendar Server 6 2005Q1 后执行安装后配置时,您可能需要迁移组件数据库和 LDAP 数据库。
本章提供了选择正确的实用程序一节,帮助您选择正确的实用程序来运行。
本章包括以下各节:
安装后的数据库迁移实用程序安装 Calendar Server 6 2005Q1 之后,如果您所拥有的日历数据库和 LDAP 数据库条目是来自早期安装的 Calendar Server 5.1.1,请按照给定的顺序运行以下实用程序:
- csmig——为 Calendar Server 6.x 数据库中的每个日历指定一个属主,并将每个日历 ID (calid) 映射到一个属主(如果需要),这可以支持托管(虚拟)域和 LDAP 日历查找数据库 (CLD) 插件。此实用程序打包在 Calendar Server 中。在 cs5migrate 之后,在 csvdmig 之前运行此实用程序。
- csvdmig——升级 Calendar Server 6.x 站点以使用托管(虚拟)域,方法是将日历的域 (@domainname) 添加到每个 calid。例如,在域 sesta.com 中,jdoe 的 calid 应该为 jdoe@sesta.com。此实用程序打包在 Calendar Server 中。在 cs5migrate 和 csmig 之后运行此实用程序。
- commdirmig——将 LDAP 数据从 Schema 1 迁移到 Schema 2,为与 Access Manager 6.1(或更高版本)配套使用做好准备。此实用程序打包在 Access Manager 中。
选择正确的实用程序由于有许多实用程序可供选择,图 4-1 显示了不同的配置方案、要运行的实用程序以及运行的顺序。
图 4-1 选择要运行的迁移实用程序
csmigcsmig 实用程序为日历数据库中的每个日历指定属主,并将每个日历 ID (calid) 映射到一个属主(如果需要)。
csmig 实用程序支持托管(虚拟)域和 LDAP 日历查找数据库 (CLD) 插件。使用 LDAP CLD 插件可以访问已迁移数据库中的日历。有关 LDAP CLD 插件的信息,请参见第 6 章“在多个计算机上配置日历数据库分发”。
本节介绍以下主题:
csmig 的功能
csmig 迁移实用程序执行以下功能:
csmig 的要求
使用 csmig 的要求为:
- 日历数据库必须未被损坏。使用 csdb check 命令检查日历数据库;如果需要,运行 csdb rebuild 命令重新建立数据库。有关这些命令的信息,请参见附录 D“Calendar Server 命令行实用程序参考”。
- 您必须为新的目标数据库准备足够的磁盘空间。如果适用,也应为备份数据库准备足够的磁盘空间。
- 要运行 csmig,请以 icsuser(或在配置过程中指定的 Calendar Server 运行时用户 ID)身份登录。如果您以超级用户(root 用户)身份运行 csmig,则可能需要重置已迁移文件的权限。
csmig 语法
csmig 实用程序语法如下:
csmig [ -t DestinationDB ] [ -b Backend-DWPHost ]
[ -o OutputFile ] [ -e ErrorFile ] [ -m MappingFile ]
-c calendarOwner -r resourceOwner { migrate|dryrun }
表 4-1 列出了实用程序选项,并给出了每个选项的说明和默认值。
csmig 迁移步骤
安装和配置 Calendar Server 6.x 后,必须运行 csmig 来迁移现有的 Calendar Server 和 LDAP 数据。LDAP CLD 插件的正常工作需要进行 LDAP 数据的迁移。要使用 csmig 迁移日历数据,请按照以下步骤执行操作:
- 使用 comm_dssetup.pl 配置 Directory Server。
如果未使用 comm_dssetup.pl 为 LDAP 属性创建索引,请在此时创建索引。这将大大提高 LDAP 数据迁移的性能。
- 请使用分步服务器(非产品服务器)执行模拟运行测试。
模拟运行报告 csmig 在实际迁移过程中将会执行的操作,但模拟运行并没有迁移任何数据。在模拟运行之后以及实际迁移之前,您可以更正任何错误,并确定处理任何未解决的日历的计划。
有关如何进行模拟运行测试的说明,请参见要执行模拟运行测试。
- 迁移产品数据
产品运行时,csmig 将迁移日历数据库(.db 文件)和 LDAP 数据(用户和组首选项数据)、icsSubscribed、icsCalendar、icsCalendarOwned、icsFreeBusy、icsSet 和 uid(用于资源日历)。迁移之后,将为所有日历资源创建 LDAP 项。
有关如何迁移产品数据的说明,请参见要迁移产品数据。
要执行模拟运行测试
- 在分步服务器上安装 Calendar Server 6.x(如果需要)。
- 将日历数据库的快照复制到分步服务器。
- 通过执行以下任务在分步服务器上模仿产品 LDAP 环境:
- 运行 comm_dssetup.pl 以配置分步 Directory Server。
- 运行 csconfigurator.sh 以配置分步 Calendar Server。
- 以 icsuser(或者如果不相同,以在配置过程中指定的 Calendar Server 运行时用户 ID)身份登录。如果您以超级用户(root 用户)身份运行 csmig,则可能需要重置已迁移文件的权限。
- 转到 cal_svr_base/SUNWics5/cal/sbin 目录。
- 运行 csdb check 命令检查数据库是否损坏。如果该命令检测出数据库已损坏,则运行 csdb rebuild 以重新建立数据库。
- 考虑为不具有属主的用户日历创建通用的 calid。例如,以下命令将创建 calid 为 orphan 的用户:
./csuser -g orphan -s adminuser -y password -l en -c orphan create orphan
- 使用 stop-cal 命令停止 Calendar Server(如果需要)。
cal_svr_base/SUNWics5/cal/sbin/stop-cal
- 运行 csmig 时应带 dryrun 选项。例如,可以输入:
./csmig -b sesta.com -o csmig.out -e csmig.errors -m csmig.map -c orphan -r calmaster dryrun
此命令将不具有属主的用户日历(orphan 日历)指定给属主 orphan,将不具有属主的资源日历指定给属主 calmaster。
- 查看输出映射文件 (csmig.map)。映射文件列出了 LDAP Schema 中需要更新的条目。
- 检查输出、映射和出错文件。解决发现的任何 LDAP 问题或错误。在进行实际的迁移之前,确定如何处理未解决的日历。有以下若干选择:
- 运行 csmig 以迁移分步日历数据库。
例如,以下命令将日历数据库迁移至 /var/opt/SUNWics5/testcsdb/ 目录:
./csmig -t /var/opt/SUNWics5/testcsdb/ -b sesta.com -o csmig.out -e csmig.errors -m csmig.map -c orphan -r calmaster migrate
- 测试迁移完成之后,请执行以下步骤检查新迁移的日历数据库。
如果成功完成了迁移测试,则可以开始迁移产品数据库。
要迁移产品数据
- 以 icsuser(或在配置过程中指定的 Calendar Server 运行时用户 ID)身份登录。如果您以超级用户(root 用户)身份运行 csmig,则可能需要重置已迁移文件的权限。
- 转到 cal_svr_base/SUNWics5/cal/sbin 目录。
- 使用 stop-cal 命令停止 Calendar Server(如果需要)。
cal_svr_base/SUNWics5/cal/sbin/stop-cal
- 备份以下数据:
- 运行 csmig 时应带 migrate 选项。
例如,以下命令将日历数据库迁移至 /var/opt/SUNWics5/newcsdb/ 目录:
./csmig -t /var/opt/SUNWics5/newcsdb/ -b sesta.com -o csmig.out -e csmig.errors -m csmig.log -c orphan -r calmaster migrate
- 运行 csdb check 命令以检查迁移的数据库。如果该命令检测出数据库已损坏,则运行 csdb rebuild 以重新建立数据库。
- 将新迁移的数据库复制到 caldb.berkeleydb.homedir.path 参数指定的 /csdb 目录中。或者编辑此参数,使其指向迁移的数据库的新位置。
- 通过对 ics.conf 文件中的以下配置参数进行必要的更改,以启用 LDAP CLD 插件:
- service.dwp.enable = "yes"
- service.dwp.port = "9779"
- csapi.plugin.calendarlookup = "y"
- csapi.plugin.calendarlookup.name = "*"
- caldb.cld.type = "directory"
- caldb.dwp.server.default = "default-server-name"
- caldb.dwp.server.server-hostname.ip = "server-hostname"(用于包含本地服务器的每个后端服务器)
- caldb.cld.cache.enable = "yes"(如果要使用 CLD 高速缓存选项)
- caldb.cld.cache.homedir.path 指定 CLD 缓存目录的位置。默认值为 /var/opt/SUNWics5/csdb/cld_cache。
有关设置 LDAP CLD 插件的配置参数的信息,请参见第 6 章“在多个计算机上配置日历数据库分发”。
- 使用 start-cal 命令重新启动 Calendar Server。
- 登录到日历用户界面(Calendar Express 或 Communications Express),并通过检查若干个迁移的日历来验证配置是否生效。
要在检查时禁用警报,请将 ics.conf 文件中的以下参数都设置为 "no":
csmig 提示和疑难解答
本节介绍了以下提示和疑难解答示例:
csmig 模拟运行日历显示了日历的错误属主。
问题示例
名为 tchang:myCalendar 的日历的属主在日历数据库中为 jsmith,csmig 模拟运行将映射显示为 jsmith:tchang_myCalendar。但是,您希望将此日历命名为 tchang:myCalendar,并将 tchang 指定为属主。
解决方案示例
在迁移之前,使用 cscal 实用程序将 tchang:myCalendar 日历的属主更改为 tchang。执行此操作后,迁移操作会将此日历映射为 tchang:myCalendar,并向 LDAP 条目的用户 ID tchang 添加 icsCalendarowned。
LDAP 日历搜索无法正常工作。
问题
迁移之后,将启用 LDAP 日历搜索,但日历搜索对话框不返回任何结果,或仅返回部分结果。
解决方法
启用 LDAP 日历搜索后,Calendar Server 可以搜索 (&(objectclass=icscalendaruser)(icscalendarowned=*substr*))。
使用以下过滤器对 LDAP 数据手动运行两个不同的搜索,并比较输出结果:
因为服务器使用包含 icsCalendarUser 对象类的过滤器,所以可能已在禁用模式检查的情况下部署了 LDAP 服务器,并且可能在没有 icsCalendarUser 对象类的情况下已经置备了某些日历条目。
csmig 模拟运行指示重复的日历名称。
问题示例
csmig 空运行映射文件和输出文件指示存在重复的日历名称。例如,在初始数据库中,jsmith 拥有以下日历:
模拟运行的结果表示迁移时将合并这两个日历,生成的日历将为 jsmith:basketball,该日历的属主为 jsmith 并总共具有 15 个事件
输出文件将包含以下警告消息:
Error modifying calendar properties, error=2
解决方案示例
如果不希望合并两个日历,则在迁移之前将 basketball 的属主更改为 jsmith 以外的用户。这可以保持这两个独立日历数据的完整性。
如何将不带有属主的日历指定给不同的属主?
问题
默认情况下,csmig 将所有不带有属主的日历指定给一个属主,但是我希望为其中的某些日历指定不同的属主。
解决方法
csmig 不接受命令行中的映射文件。但是,可以在迁移之前为初始数据库中不带有属主的日历指定属主。检查所有不带有属主的日历的空运行映射文件。然后在迁移之前使用 cscal 实用程序为不带有属主的日历指定属主。在 dryrun 模式下再次运行 csmig 以验证新的属主。
如何将日历用户移动到其他后端服务器?
问题
如何将用户从一个后端服务器移动到另一个后端服务器?
解决方法
要移动日历用户,应通过 export 命令导出初始服务器上该用户的每个日历,然后通过 import 命令将日历输入到第二个服务器。移动日历后,可以删除初始服务器上的日历。有关如何移动日历的说明,请参见将用户日历移至不同的后端服务器或将资源日历移至不同的后端服务器。
csvdmigcsvdmig 实用程序为要使用托管(虚拟)域的工作地点修改 Calendar Server 数据库和 LDAP Directory Server 数据库。
本节包含以下主题:
csvdmig 的功能
csvdmig 实用程序按以下方式将域名添加到用户 ID:
csvdmig 语法
csvdmig 实用程序的语法如下:
表 4-2 列出了 csvdmig 使用的选项,并给出了每个选项的说明。
表 4-2 csvdmig 的选项
选项
说明和默认值
-m MappingFile
指定映射文件的输入参数。有关映射文件的更多信息,请参见映射文件。默认值为 MigrateMapping。
-c ConfigFile
指定 Calendar Server 配置文件的输入参数。默认值为 ics.conf 文件。
-t DestinationDB
指定数据库位置的输出参数。默认值为 MigratedDB。请参见目标 DB。
-e ErrorFile
为无法解决的错误指定错误文件的名称的输出参数。默认值为 MigrateError。
DB|LDAP
指定要修改的数据库:
DB — Calendar Server 数据库
LDAP — LDAP 目录默认值为日历数据库 (DB)。
映射文件
映射文件是输入文本文件,可将现有用户映射到其各自的域。运行 csvdmig 之前,您必须创建映射文件。每行指定一个条目,在旧值和新值之间留有一个空格。例如:
user1 user1@sesta.com
user2 user2@siroe.com
user3 user3@sesta.com
...
user-n user-n@siroe.com目标 DB
虽然此变量的名称为 DestinationDB 并且其默认值为 MigratedDB,但 csvdmig 并不创建单独的迁移数据库。它只是对用该选项指定的原始数据库进行相应更新。
csvdmig 示例
commdirmigcommdirmig 实用程序将 LDAP 数据从 Sun LDAP Schema 1 迁移到 Schema 2,为将 Access Manager 用于验证服务做好准备。
本节包含以下主题:
谁应运行该实用程序
如果之前使用的是 Messaging Server 5.x 或 Calendar Server 5.x,则您的 LDAP 条目的格式为 Schema 1。在新的 Calendar Server 6 2005Q1 环境中,如果要使用 Access Manager 来进行验证,则必须运行此实用程序将 LDAP 条目转换为 Schema 2 格式。
如果使用的不是 Access Manager,由于 Schema 2 是所有使用 LDAP 的 Java Enterprise System 产品首选的 LDAP Schema,所以仍应考虑迁移 LDAP 数据。将来,更新的通信产品(Calendar、Messaging 和 Instant Messaging)版本可能不再支持 Schema 1。但是,如果您目前不打算使用 Access Manager,则可以在以后适当的时候进行迁移。
何时运行该实用程序
如果要从 Java Enterprise System 之前的 Calendar Server 版本迁移,请在运行 cs5migrate、csmig 和 csvdmig 之后运行此实用程序。
何处查找文档
该迁移实用程序需要特殊的准备和规划。此迁移实用程序在单独的文档指南中有说明,请参见以下站点中的 Sun Java System Communications Services Schema Migration Guide:
http://docs.sun.com/coll/CalendarServer_05q1 和
http://docs.sun.com/coll/CalendarServer_05q1_zh何处查找该实用程序
在 Sun Java Enterprise System 2005Q1 中,此实用程序与 Access Manager 2005Q1 以及用户管理实用程序 commadmin 捆绑在一起。
如果不打算更新 Access Manager 并且只需要用于 Calendar Server 的迁移实用程序,可从技术支持处获得此实用程序的修补程序。