12.10. 动态重新加载架构
默认情况下,目录服务器实例使用的模式文件会在目录中加载到目录中。这意味着,添加到 schema 目录中的任何新架构文件都不可用,除非服务器重启。目录服务器有一个任务,可手动重新载入目录服务器实例的完整模式,包括自定义文件,无需服务器重启。
您可以使用以下方法之一重新载入模式:
- dsconf schema reload 命令。请查看 第 12.10.1 节 “使用 dsconf 模式重新加载命令动态重新加载架构”
- cn=tasks 条目。请查看 第 12.10.2 节 “使用 cn=tasks Entry 动态重新加载 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
模式重新加载任务是一个本地操作,因此如果模式被添加到一个供应商,则不会在多层次环境中复制架构更改。在所有供应商服务器上载入新的模式文件:
- 停止复制。请参阅 第 15.9 节 “禁用和重新启用复制”。
- 复制新的架构文件,并为每个供应商和副本服务器运行 schema 重新加载任务。请参阅:
- 重启复制。请参阅 第 15.9 节 “禁用和重新启用复制”。
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.