12.10. 动态重新加载架构

默认情况下,目录服务器实例使用的模式文件会在目录中加载到目录中。这意味着,添加到 schema 目录中的任何新架构文件都不可用,除非服务器重启。目录服务器有一个任务,可手动重新载入目录服务器实例的完整模式,包括自定义文件,无需服务器重启。
您可以使用以下方法之一重新载入模式:
注意
目录服务器也始终重新加载存储在 /usr/share/dirsrv/schema/ 目录中的所有模式文件。

12.10.1. 使用 dsconf 模式重新加载命令动态重新加载架构

使用 dsconf schema reload 命令重新载入架构:
# dsconf -D "cn=Directory Manager" ldap://server.example.com schema reload
Attempting to add task entry... This will fail if Schema Reload plug-in is not enabled.
Successfully added task entry cn=schema_reload_2018-08-28T09:45:48.027962,cn=schema reload task,cn=tasks,cn=config
To verify that the schema reload operation was successful, please check the error logs
默认情况下,Directory 服务器重新加载存储在 nsslapd-schemadir 参数中设置的架构文件。(可选)将 -d 目录 选项传给命令,以重新加载存储在不同目录中的模式。

12.10.2. 使用 cn=tasks Entry 动态重新加载 Schema

Directory 服务器配置中的 cn=tasks,cn=config 条目是服务器用来管理任务的临时条目的容器条目。要启动模式重新加载操作,请在 cn=schema 重新加载任务cn=tasks,cn=config 条目中创建任务。
默认情况下,Directory 服务器重新加载存储在 nsslapd-schemadir 参数中设置的架构文件。例如,要重新载入存储在此参数中设置的目录中的模式文件:
# ldapadd -D "cn=Directory Manager" -W -p 389 -h server.example.com -x

dn: cn=example_schema_reload,cn=schema reload task,cn=tasks,cn=config
objectclass: extensibleObject
cn: cn=example_schema_reload
(可选)指定 schemadir 参数,以重新加载存储在不同目录中的模式。例如:
# ldapadd -D "cn=Directory Manager" -W -p 389 -h server.example.com -x

dn: cn=example_schema_reload,cn=schema reload task,cn=tasks,cn=config
objectclass: extensibleObject
cn: cn=example_schema_reload
schemadir: /example/schema/
任务完成后,该条目将从目录配置中删除。
有关 cn=schema 重新加载任务,cn=tasks,cn=config 条目的详情,请查看 Red Hat Directory Server Configuration, Command, and File Reference 中的 cn=schema reload task 部分。

12.10.3. 重新加载复制拓扑中的 Schema

模式重新加载任务是一个本地操作,因此如果模式被添加到一个供应商,则不会在多层次环境中复制架构更改。在所有供应商服务器上载入新的模式文件:
  1. 复制新的架构文件,并为每个供应商和副本服务器运行 schema 重新加载任务。请参阅:

12.10.4. 模式重新加载错误

当 schema 重新加载任务运行时,服务器不会返回它是否成功完成。要验证模式重新加载操作是否成功,请检查错误日志。模式重新加载有两个任务,首先验证 schema 文件,然后载入它。
成功消息显示验证通过和任务完成。
[06/Jan/2009:17:52:04.001214874 -0500] schemareload - Schema reload task starts (schema dir: default) ...
[06/Jan/2009:17:52:04.754335904 -0500] schemareload - Schema validation passed.
[06/Jan/2009:17:52:04.894255328 -0500] schemareload - Schema reload task finished.
如果存在故障,日志会显示哪个步骤失败以及原因。
[..] schemareload - Schema reload task starts (schema dir: /bogus) ...
[..] schema - No schema files were found in the directory /bogus
[..] schema_reload - schema file validation failed
[..] schemareload - Schema validation failed.