上一页      目录     索引      文档主页      下一页     
iPlanet Directory Server 5.1 管理员指南



第 4 章   填充目录数据库


数据库中包含受目录服务器管理的目录数据。本章介绍下列填充目录数据库的操作:



启用和禁用只读模式

在 iPlanet Directory Server 上执行某些导出或备份操作之前,可以启用任何数据库上的只读模式,从而确保在给定时刻充分了解这些数据库的状态。

执行导出或备份操作之前,iPlanet Directory Server Console 及命令行实用程序不会自动将目录置于只读模式,因为这样会使目录无法进行更新。但如果为多原版配置,就不会出现上述问题。


启用只读模式

  1. 在 iPlanet Directory Server Console 上,选择“配置”选项卡,然后展开导航树中的“数据”文件夹。

  2. 选择要置于只读模式的数据库,然后单击右侧窗口中的“数据库设置”选项卡。

  3. 选中“数据库为只读”复选框。

  4. 单击“保存”。

    所做更改将立即生效。

执行导入或恢复操作之前,应确保受该操作影响的数据库处于只读模式下。如果确实为只读模式,请利用下列操作使之处于可更新状态下:


禁用只读模式

  1. 在 iPlanet Directory Server Console 上,选择“配置”选项卡,然后展开“数据”目录树。

  2. 选择要让其可更新的数据库,然后单击右侧窗口中的“数据库设置”选项卡。

  3. 清除“数据库为只读”复选框。

  4. 单击“保存”。

    所做更改将立即生效。



导入数据

iPlanet Directory Server 提供了三种数据导入方法:

  • 从 iPlanet Directory Server Console 导入。

    可以使用 iPlanet Directory Server Console 将数据追加到所有数据库中,包括数据库链接。

  • 初始化数据库。

    可以使用 Directory Server Console 将数据导入一个数据库中。该方法将覆盖数据库包含的所有数据。

  • 从命令行导入数据。

    可以使用命令行实用程序导入数据。



    注意 所导入的所有 LDIF 文件都必须使用 UTF-8 字符集编码方式。



下表说明导入和初始化数据库之间的区别:


表 4-1    导入数据与初始化数据库之间的比较

比较范围

导入数据

初始化数据库

覆盖数据库  

 

 

LDAP 操作  

添加、修改、删除  

只添加  

性能  

更为耗时  

快速  

分区特殊要求  

适用于所有分区  

仅本地分区  

对服务器故障的响应  

尽力(出现故障前所做的所有更改都可保留下来)  

极少(所有更改在出现故障后都将丢失)  

LDIF 文件位置  

从本地到控制台  

从本地到控制台或从本地到服务器  

导入配置信息 (cn=config)  

 

 

下列部分介绍导入数据:


从控制台执行导入

从 iPlanet Directory Server Console 执行导入操作时,系统可执行 ldapmodify 操作,从而进行数据的追加及条目的修改和删除。操作将面向所有受 从 iPlanet Directory Server Console 执行导入操作时,系统可执行 ldapmodify 操作,从而进行数据的追加及条目的修改和删除。 Server 管理的数据库,同时还包括 从 iPlanet Directory Server Console 执行导入操作时,系统可执行 ldapmodify 操作,从而进行数据的追加及条目的修改和删除。 Server 对其配置有数据库链接的远程数据库。

为执行导入,必须以目录管理员的身份进行登录。

要从 iPlanet Directory Server Console 导入数据:

  1. 在 iPlanet Directory Server Console 上,选择“任务”选项卡。滚动到屏幕的底端,选择“导入数据库”。

    也可以转到“配置”选项卡并选择“控制台”菜单中的“导入”,同样可以进行导入。

    此时显示“导入数据库”对话框。

  2. 在“LDIF 文件”字段中,输入所要导入的 LDIF 文件的完整路径,或者单击“浏览”以选择要导入的文件。

    如果是在目录的远程计算机上运行控制台,则字段名将显示为“LDIF 文件(位于运行控制台的计算机上)”。这是提醒用户:所浏览的目录并非当前目录。相反,此时所浏览的是运行控制台的计算机的文件系统。

  3. 在“选项”框中,可选择下列一个或多个选项:

    只添加。除了默认的添加指令外,LDIF 文件可能还包含修改和删除指令。如果希望服务器忽略除添加操作以外的其他操作,请选中“只添加”复选框。

    出错时继续。如果希望服务器即使在出现错误的情况下仍继续导入,请选中“出错时继续”复选框。例如,如果导入的 LDIF 文件中除了新的条目外,还含有数据库中已有的某些条目,即可使用该选项。服务器会在拒绝文件中记录下已有的条目,同时添加所有新条目。

  4. 在“拒绝的文件”字段中,输入某个文件的完整路径,用于供服务器记录不能导入的条目;或者单击“浏览”以选择容纳被拒绝条目的文件。

    例如,服务器无法导入数据库中已有的条目或无父对象的条目。控制台将把服务器发送来的错误信息写入拒绝文件中。

    如果将该字段空置,服务器将不会记录被拒绝的条目。

  5. 单击“确定”。

    服务器将执行导入并同时创建索引。


从控制台初始化数据库

您可以覆盖数据库中现有的数据。以下部分介绍利用控制台来初始化数据库。

为初始化数据库,则必须以目录管理员身份进行登录。原因是:除非您作为目录管理员绑定到目录上(根 DN),否则将无法导入包含根条目的 LDIF 文件。只有目录管理员才有权访问根条目(例如,根条目可能为 dc=siroe,dc=com)。



警告

从 LDIF 文件初始化数据库时,除非是要恢复数据,否则应注意不要覆盖 o=NetscapeRoot 后缀。如果覆盖该后缀,就会删除某些重要信息,并因此要求重新安装所有 iPlanet 服务器。



要使用 iPlanet Directory Server Console 初始化数据库:

  1. 在 iPlanet Directory Server Console 上,选择“配置”选项卡。

  2. 展开左侧导航窗口中的“数据”目录树。展开所要初始化的数据库的后缀,然后单击该数据库。

  3. 右键单击数据库,然后选择“初始化数据库”。

    也可以从“对象”菜单中选择“初始化数据库”。

  4. 在“LDIF 文件”字段中,输入所要导入的 LDIF 文件的完整路径,或者单击“浏览”并在计算机上进行查找。

  5. 如果是在所导入文件的本机上运行控制台,请跳到步骤 6。对于包含 LDIF 文件的服务器而言,如果是从其远程计算机运行控制台,请选择下列选项之一:

    从本地机器。表明 LDIF 文件位于本地计算机上。

    从服务器。表明 LDIF 文件位于远程服务器上。默认情况下,控制台将查找下列目录中的文件:

    /var/ds5/slapd-serverID/ldif

  6. 单击“确定”。


从命令行导入

有三种通过命令行导入数据的方法:

  • 使用 /usr/sbin/directoryserver ldif2db

    该导入方法将覆盖数据库的内容,同时要求停止服务器。

  • 使用 /usr/sbin/directoryserver ldif2db-task

    该导入方法将覆盖数据库的内容,而服务器仍将处于运行状态。

  • 使用 /usr/sbin/directoryserver ldif2ldap

    该方法将通过 LDAP 向 LDIF 文件中追加数据。使用该方法可以将数据追加到所有数据库中。


使用 ldif2db 命令进行导入

/usr/sbin/directoryserver ldif2db 命令将覆盖所指定的数据库中的数据。该命令要求在导入前关闭服务器。

默认情况下,该命令首先保存任何现有的 o=NetscapeRoot 配置信息,然后将其与所导入文件中的 o=NetscapeRoot 配置信息进行合并。



警告

该命令将覆盖数据库中的数据。



要在停止服务器的情况下导入 LDIF:

  1. 从命令行上作为 root 用户通过以下命令停止服务器:

    # /usr/sbin/directoryserver stop

  2. 使用 ldif2db 子命令:

    # /usr/sbin/directoryserver ldif2db

下面的示例使用该命令将两个 LDIF 文件导入一个单一的数据库中。



警告

如果在 -n 选项中指定的数据库并不对应于 LDIF 文件包含的后缀,则该数据库中的所有数据都将被删除,而导入操作将失败。请务必不要将数据库名称拼写错误。



#!/bin/sh
/usr/sbin/directoryserver ldif2db -n Database1 \
-i /usr/iplanet/servers/slapd-siroe/ldif/demo.ldif \
-i /usr/iplanet/servers/slapd-siroe/ldif/demo2.ldif


表 4-2    示例中所用的 ldif2db 选项说明

选项

说明

-n

 

指定用于接收导入数据的数据库名称。  

-i

 

指定所要导入的 LDIF 文件的完整路径名。该选项为必需项。可以使用多个 -i 变量一次导入多个 LDIF 文件。导入多个文件时,服务器将按命令行中指定的顺序导入 LDIF 文件。  


使用 ldif2db-task 命令进行导入

同上,/usr/sbin/directoryserver ldif2db-task 将覆盖所指定的数据库中的数据。执行导入时,该命令要求服务器处于运行状态。



警告

该命令将覆盖数据库中的数据。



以下示例导入一个 LDIF 文件。运行该脚本无需 root 权限,但是必须以目录管理员进行身份验证。

#!/bin/sh
/usr/sbin/directoryserver ldif2db-task \
-D "cn=Directory Manager" -w password -n Database1 \
-i /usr/iplanet/servers/slapd-siroe/ldif/demo.ldif


表 4-3    示例中所用的 ldif2db-task 选项说明

选项

说明

-D

 

指定目录管理员的 DN。  

-w

 

指定目录管理员的口令。  

-n

 

指定用于接收导入数据的数据库名称。  

-i

 

指定所要导入的 LDIF 文件的完整路径名。该选项为必需项。可以使用多个 -i 变量一次导入多个 LDIF 文件。导入多个文件时,服务器将按命令行中指定的顺序导入 LDIF 文件。  


使用 ldif2ldap 命令进行导入

/usr/sbin/directoryserver ldif2ldap 命令通过 LDAP 向 LDIF 文件中追加数据。使用该命令可同时向所有目录数据库中导入数据。使用该命令导入时,服务器必须处于运行状态。

以下示例执行导入。运行该命令无需 root 权限,但必须在命令行中提供目录管理员凭证。最后一个参数是要导入的 LDIF 文件的名称。

#!/bin/sh
/usr/sbin/directoryserver ldif2ldap "cn=Directory Manager" password \
/usr/iplanet/servers/slapd-siroe/ldif/demo.ldif



导出数据



使用 LDAP 数据交换格式 (LDIF) 可以导出数据库中的数据库条目。LDIF 是一种 RFC 2849“LDAP 数据交换格式 (LDIF) - 技术规格”中所介绍的标准格式。

导出数据功能可用于:

  • 备份数据库中的数据

  • 将数据复制到另一个目录服务器中

  • 将数据导入另一个应用程序

  • 在目录拓扑结构变化后重新填充数据库

例如,假设目录位于某个数据库中,而您决定将其内容拆分到两个数据库中,如下所示:



填充新数据库时,要求将数据库 1 的内容导出,然后将其导入新数据库 1 和 2 中。

可以使用 iPlanet Directory Server Console 或命令行实用程序来导出数据。下列部分将详细介绍这些方法:

导出操作并不导出配置信息 (cn=config)。



警告

请勿在导出操作期间停止服务器。




使用控制台将目录数据导出到 LDIF

您可以将部分或全部目录数据导入 LDIF 中,而这与最终导出文件的位置有关。如果 LDIF 文件位于服务器上,则可以仅将本地数据库中所含的数据导出到服务器上。如果 LDIF 文件位于服务器的远程位置,则可以导出数据库全部内容及数据库链接。

要在服务器运行状态下从 iPlanet Directory Server Console 将目录数据导入 LDIF:

  1. 在 iPlanet Directory Server Console 上,选择“任务”选项卡。滚动到屏幕的底端,然后单击“导出数据库”。

    要导出数据库全部内容,也可选择“配置”选项卡,然后选择“控制台”菜单中的“导出”。

    此时显示“导出数据库”对话框。

  2. 在“LDIF 文件”字段中输入 LDIF 文件的完整路径和文件名,或者单击“浏览”以查找该文件。

    如果是在远程服务器上运行控制台,则不启用“浏览”按钮。如果未启用“浏览”按钮,文件将默认存储到以下目录中:

    /var/ds5/slapd-serverID/ldif

  3. 如果是在服务器的远程计算机上运行控制台,则在 LDIF 文件字段的下面将出现两个单选按钮。选择“对于本地机器”则指示导出到控制台所在计算机的 LDIF 文件中。选择“对于服务器”则指示导出到服务器的 LDIF 文件中。

  4. 如果想导出整个目录,请选择“整个数据库”单选按钮。

    如果只想导出数据库中所含后缀的单个子树,请选择“子树”单选按钮,然后在“子树”文本框中输入后缀的名称。该选项可用于导出包含在多个数据库中的某个子树。

    也可单击“浏览”以选择后缀或子树。

  5. 单击“确定”以导出文件。


使用控制台将单个数据库导出到 LDIF

要在服务器运行状态下从 iPlanet Directory Server Console 将一个数据库导入 LDIF:

  1. 在 Directory Server Console 上,选择“配置”选项卡。

  2. 展开左侧导航窗口中的“数据”目录树。展开所要导出的数据库所维护的后缀。选择到要导出的后缀下的数据库。

  3. 右键单击该数据库,然后选择“导出数据库”。

    也可从“对象”菜单中选择“导出数据库”。

    此时显示“导出分区”对话框。

  4. 在“LDIF 文件”字段中,输入 LDIF 文件的完整路径,或者单击“浏览”以在计算机上查找该文件。

    如果未启用“浏览”按钮,文件将默认存储到以下目录中:

    /var/ds5/slapd-serverID/ldif

  5. 单击“确定”以导出文件。


从命令行导出到 LDIF

使用 /usr/sbin/directoryserver db2ldif 命令可以将输入库导入到 LDIF。该命令可以将所有数据库内容或其中的一部分导出到一个 LDIF 文件,而不管服务器是否处于运行状态。

要将数据库内容导出到 LDIF 文件,请使用以下命令:

# /usr/sbin/directoryserver db2ldif

下面的示例将两个后缀下的数据库导出到一个 LDIF 文件中:

/usr/sbin/directoryserver db2ldif -n database1 -a output.ldif \
-s "dc=siroe,dc=com" -s "o=NetscapeRoot"

下表说明示例中所用的选项:


表 4-4    示例中所用的 db2ldif 选项说明

选项

说明

-n

 

指定用于接收导入数据的数据库名称。  

-a

 

定义供服务器保存所导出的 LDIF 的输出文件的名称。默认情况下,该文件储存在 /var/ds5/slapdserverID 目录中。  

-s

 

指定导出中所含的后缀。可以使用多个 -s 参数指定多个后缀。  



备份和恢复数据



使用 iPlanet Directory Server Console 或命令行实用程序可以备份和恢复数据库。

下列部分介绍备份和恢复数据的过程:


备份所有数据库

下列过程介绍如何利用 iPlanet Directory Server Console 及命令行备份目录中所有的数据库内容。



注意 对于使用数据库链接功能所链接的远程服务器而言,使用该备份方法无法备份其数据库中所含的数据。




从服务器控制台备份所有数据库

从 iPlanet Directory Server Console 备份数据库时,服务器将把数据库的全部内容及相关索引文件都复制到备份位置。执行备份时,服务器可以处于运行状态下。

要从服务器控制台备份数据库:

  1. 在 iPlanet Directory Server Console 上,选择“任务”选项卡。

  2. 单击“备份目录服务器”。

    此时显示“备份目录”对话框。

  3. 在“目录”文本框中,输入用于存储备份文件的完整路径。如果是在目录所在的计算机上运行控制台,则单击“浏览”以查找某个本地目录。

    或者单击“使用缺省值”将备份存储到以下目录:

    /var/ds5/slapd-serverID/bak/YYYY_MM_DD_hh_mm_ss

    其中 serverID 是目录服务器的名称。

  4. 单击“确定”以创建备份。


从命令行备份所有数据库

在命令行上,可以使用 /usr/sbin/directoryserver db2bak 命令进行数据库备份。无论服务器是否处于运行状态,该命令都可以工作。

使用该备份方法无法备份配置信息。有关备份配置信息的说明,请参阅“备份 dse.ldif 配置文件”

要备份目录,请使用以下命令:

# /usr/sbin/directoryserver db2bak backupDir

backupDir 参数指定储存备份的目录。默认的备份目录名利用当前的日期生成:YYYY_MM_DD_hh_mm_ss

下面的示例将所有数据库备份到指定的目录中:

# /usr/sbin/directoryserver db2bak /var/ds5/slapd-sv/bak/checkpoint


备份单个数据库

如果符合以下条件,可以使用本部分介绍的方法:

  • 目录服务器已关闭。

  • 要制作的备份将用于恢复同一服务器上的数据库。



    注意 使用该备份方法无法备份远程服务器上的数据库(由数据库链接所链接的数据库)所含的数据;使用备份数据也无法初始化客户或中枢副本。



要备份单个数据库:

  1. 从命令行上作为 root 用户通过以下命令停止服务器:

    # /usr/sbin/directoryserver stop

  2. 变换到包含所要备份的数据库的目录:

    # cd /var/ds5/slapd-serverID/db

  3. 将目录中的所有文件都复制到所创建的备份目录中。请勿在 slapd-serverID/bak/ 下创建目录,因为 iPlanet Directory Server Console 假定该目录所含的备份为全局备份。


备份 dse.ldif 配置文件

Directory Server 会自动备份 dse.ldif 配置文件。启动目录服务器时,它将自动在以下目录中以 dse.ldif.startOK 文件名创建 dse.ldif 文件的备份:

/var/ds5/slapd-serverID/config

dse.ldif 文件进行修改时,该文件将被首先备份到 config 目录下名为 dse.ldif.bak 的文件中,之后,服务器将写入对 dse.ldif 文件的修改内容。如果需要保存配置,请制作上述文件副本之一。


恢复所有数据库

下列过程介绍如何利用 iPlanet Directory Server Console 及命令行备份目录中所有的数据库内容。



注意 恢复数据库时,服务器必须处于运行状态。但在恢复过程中,数据库将无法用于处理操作。




从控制台恢复所有数据库

如果数据库已损坏,则可使用 iPlanet Directory Server Console 从以前生成的备份中进行恢复。该过程包括:停止服务器,然后将数据库及相关的索引文件从备份位置复制到数据库目录中。



警告

恢复数据库时将覆盖任何现有的数据库文件。



要从以前创建的备份中恢复数据库:

  1. 在 iPlanet Directory Server Console 上,选择“任务”选项卡。

  2. 单击“恢复 Directory Server”。

    此时显示“恢复目录”对话框。

  3. 从“可用备份”列表中选择备份,或者在“目录”文本框中输入到有效备份的完整路径。

    “可用备份”列表中给出以下默认目录中的所有备份:

    /var/ds5/slapd-serverID/bak

  4. 单击“确定”以恢复数据库。


从命令行恢复数据库

在命令行中,可以使用下列命令来恢复数据库:

  • 使用 /usr/sbin/directoryserver bak2db 命令。该命令要求关闭服务器。

  • 使用 /usr/sbin/directoryserver bak2db-task 命令。使用该命令时,要求服务器处于运行状态。


使用 bak2db 命令
要在关闭服务器的情况下从命令行恢复目录:

  1. 从命令行上作为 root 用户通过以下命令停止服务器:

    # /usr/sbin/directoryserver stop

  2. 使用 bak2db 命令和备份目录的完整路径:

    # /usr/sbin/directoryserver bak2db backupDir



    警告

    恢复数据库时将覆盖任何现有的数据库文件。



下面的示例从默认的备份目录中恢复备份:

# /usr/sbin/directoryserver bak2db /var/ds5/slapd-sv/bak/2001_07_01_11_34_00


使用 bak2db-task 命令
要在服务器运行状态下从命令行恢复目录,请使用以下命令:

/usr/sbin/directoryserver bak2db-task



警告

恢复数据库时将覆盖任何现有的数据库文件。



以下示例导入一个 LDIF 文件。

#!/bin/sh
/usr/sbin/directoryserver bak2db-task -D "cn=Directory Manager" \
-w password -a /usr/iplanet/servers/slapd-siroe/bak/checkpoint


表 4-5    示例中所用的 bak2db-task 选项说明

选项

说明

-D

 

指定目录管理员的 DN。  

-w

 

指定目录管理员的口令。  

-a

 

定义备份目录的完整路径。  


恢复单个数据库

如果符合以下条件,可以使用本部分介绍的方法:

  • 目录服务器已关闭。

  • 要从以前创建的备份文件中恢复的数据库将用于同一服务器上的同一数据库。

要恢复单个数据库:

  1. 从命令行上作为 root 用户通过以下命令停止服务器:

    # /usr/sbin/directoryserver stop

  2. 变换到包含所要恢复之备份的目录。

  3. 对于包含要用备份来予以覆盖的数据库的目录而言,请将所有文件都复制到其中。数据库目录位于:

    /var/ds5/slapd-serverID/db

    例如,可以键入:

    cp backupDir/* /var/ds5/slap-siroe/db/databaseDir


恢复包含复制条目的数据库

本部分介绍如何在供给服务器和客户服务器上恢复数据库,以及如何确保在恢复操作后保持供给服务器和客户服务器同步。


恢复供给器副本

如果是要恢复向其它服务器提供条目的数据库(供给器副本),则必须重新初始化所有从恢复数据库中接收更新数据的服务器(例如客户服务器、中枢服务器及多原版复制环境中的其它供给服务器)。

恢复过程中,将擦除与恢复数据库相关联的更改日志。供给服务器的日志文件中将记录一条消息,指示需要重新进行初始化。

有关初始化客户服务器的信息,请参阅第 8 章“管理复制”


恢复客户副本

如果所恢复的数据库中包含从供给服务器接收来的数据,就会出现下列两种情况之一:

  • 更改日志条目在供给服务器上尚未过期。

    只有当备份时间小于所设更改日志有效期属性的最大值时,才会出现这种情况。该属性称为 nsslapd-changelogmaxage,位于 cn=changelog5,cn=config 条目中。有关使用该选项的详细信息,请参阅 iPlanet Directory Server 配置、命令和文件参考指南

    可恢复本地客户服务器然后继续正常操作。但是,在恢复客户副本时,客户服务器必须停止。如果在恢复客户副本时继续复制,则复制过程将出现许多错误。

  • 自本地备份以来,供给服务器上的更改日志条目已过期。

    需要重新初始化客户服务器。有关重新初始化客户服务器的详细信息,请参阅“初始化客户”

有关管理复制的信息,请参阅第 8 章“管理复制”


恢复 dse.ldif 配置文件

要恢复 dse.ldif 配置文件,请停止服务器,然后使用“恢复单个数据库”中所述的操作过程将 dse.ldif 文件的备份副本复制到自己的目录中。复制完数据后,重新启动服务器。

目录将在以下目录中创建 dse.ldif 文件的两个备份副本:

/var/ds5/slapd-serverID/config

其中 dse.ldif.startOK 文件记录服务器启动时 dse.ldif 文件的副本。而 dse.ldif.bak 文件则包含对 dse.ldif 文件所做最新更改的备份。将带有最新更改信息的文件复制到自己的目录中。


上一页      目录     索引      文档主页      下一页     
版权所有 © 2001 Sun Microsystems, Inc.。部分版权所有 © 2001 Netscape Communications Corp.。保留所有权利。

最近更新时间:2002 年 2 月 15 日