7.2. 目录服务器在复制环境中管理模式更新


当您更新 cn=schema 树中的目录模式时,目录服务器会将更改存储在 /etc/dirsrv/slapd- <instance_name&gt; /schema/99user.ldif 文件中,包括更改状态号(CSN)。

目录服务器不会直接将 schema 更改复制到其他副本。当复制树中更新目录内容时,模式复制将开始。例如,如果您在修改模式后更新用户,供应商会将存储在 nsSchemaCSN 属性中的 CSN 与消费者上的属性进行比较。如果消费者上的 nsSchemaCSN 属性的值低于供应商上的 nsSchemaCSN 属性的值,则目录服务器会将 schema 复制到消费者。要成功复制,供应商上的所有对象类和属性类型必须是消费者定义的超集。

例 7.1. 模式子集和超集

  • server1 上,示例 对象类允许 a1、 a2a3 属性。
  • server2 上,示例 对象类允许 a1a3 属性。

在上例中,server1示例 对象类的 schema 定义是 server2 上对象类的超集。在验证阶段,当目录服务器复制或接受 schema 时,服务器会检索 superset 定义。例如,如果消费者检测到本地模式中的对象类允许比供应商模式中的对象类更少的属性,Directory 服务器会更新本地模式。

如果架构定义成功复制,则服务器和架构定义(如对象类和属性类型)上的 nsSchemaCSN 属性不再与复制会话的开头进行比较。

在以下情况下,Directory 服务器不会复制模式:

  • 一个主机上的 schema 是另一个主机的 schema 的子集。

    例如,server2example 对象类的 schema 定义是 server1 上对象类的子集。属性子集(单值属性是多值属性)和属性语法的子集。

  • 当供应商模式和消费者模式中的定义需要合并时。
  • 目录服务器不支持合并模式。例如,如果一个服务器上的对象类允许 a1、a 2a3 属性以及 a1、 a3a4 在其他服务器上,则架构不是子集且无法合并。
  • 您可以使用 /etc/dirsrv/slapd- <instance_name&gt; /schema/99user.ldif 以外的模式文件。

    目录服务器允许您在 /etc/dirsrv/slapd-instance_name/schema/ 目录中添加额外的 schema 文件。但是,只有 /etc/dirsrv/slapd-instance_name/schema/99user.ldif 文件中的 CSN 会被更新。因此,其他架构文件仅在本地使用,不会自动传送到复制合作伙伴。

    重要

    要启用 Directory 服务器来自动复制模式并避免重复的模式定义,请在 /etc/dirsrv/slapd- <instance_name>/schema/99user.ldif 文件中存储自定义模式。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat