15.11. 使用 Fractional Replication 管理属性


作为 第 15.1.7 节 “使用 DNATactional Replication 复制子属性集” 描述,部分复制允许管理员设置从复制更新 中排除 的属性。管理员可以出于各种性能原因进行此操作 - 限制通过网络发送的大量属性数量,或者减少修复任务(如 memberOf 计算)运行的次数。
要从复制中排除的属性列表在 nsDS5ReplicatedAttributeList 属性中定义。此属性是复制协议的一部分,可以在 web 控制台中的复制协议向导中配置,或者在创建复制协议时通过命令行进行配置。
nsDS5ReplicatedAttributeList: (objectclass=*) $ EXCLUDE memberof authorityRevocationList accountUnlockTime
Copy to Clipboard Toggle word wrap
重要
目录服务器在 nsDS5ReplicatedAttributeList 属性的值中需要 (objectclass swig)$ EXCLUDE 部分。如果您直接编辑属性,例如使用 ldapmodify 工具,您必须将此部分与上例中显示的属性列表一起使用。但是,dsconf 和 Web 控制台会自动添加 (objectclass swig)$ EXCLUDE 部分,且您必须只指定属性。
首次配置部分复制时,排除的属性列表适用于所有更新操作。这意味着,对总更新和常规增量更新不包括此属性列表。但是,在有些情况下,属性应该不包括在性能增量更新中,但应包含在整个更新中,以确保目录数据集完成。在这种情况下,可以添加一个第二个属性,它定义了单独的属性列表来从总体更新中排除, nsDS5ReplicatedAttributeListTotal
注意
nsDS5ReplicatedAttributeList 是主部分复制属性。如果只设置了 nsDS5ReplicatedAttributeList,则它适用于增量更新和整个更新。如果设置了 nsDS5ReplicatedAttributeListnsDS5ReplicatedAttributeListTotal,则 nsDS5ReplicatedAttributeList 仅适用于增量更新。
例如,每次将 memberOf 属性添加到条目时,都会运行 memberOf 修复任务来解析组成员资格。如果每次发生复制时运行该任务,这可能会导致服务器上的开销。因为只针对一个数据库进行总更新(新添加到复制,或者长时间离线),因此在完全更新是一个可接受的选项后运行 memberOf 修复任务。在这种情况下,nsDS5ReplicatedAttributeList 属性列出了 memberOf,因此它不包括在增量更新中,但 nsDS5ReplicatedAttributeListTotal 不会列出 memberOf,使其包含在整个更新中。
增量更新的排除列表在复制协议的 nsDS5ReplicatedAttributeList 属性中设置。例如:
nsds5replicatedattributelist: (objectclass=*) $ EXCLUDE authorityRevocationList accountUnlockTime memberof
Copy to Clipboard Toggle word wrap
要设置 nsDS5ReplicatedAttributeList 属性,请使用 dsconf repl-agmt set 命令。例如:
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set \
     --suffix="suffix" --frac-list="authorityRevocationList accountUnlockTime memberof" \
     agreement_name
Copy to Clipboard Toggle word wrap
如果 nsDS5ReplicatedAttributeList 是唯一设置的属性,则该列表适用于增量和总更新。要为总数更新设置单独的列表,请将 nsDS5ReplicatedAttributeListTotal 属性添加到复制协议中:
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set \
     --suffix="suffix" --frac-list-total="accountUnlockTime" \
     agreement_name
Copy to Clipboard Toggle word wrap
注意
在为总更新设置 nsDS5ReplicatedAttributeList Total 前,必须为增量更新设置 nsDS5ReplicatedAttributeList 属性。

15.11.2. Replication Keep-alive Entry

当您更新供应商的属性时,供应商会增加 changelog 更改序列号(CSN)。在复制拓扑中,这个服务器现在连接到第一个消费者,并将本地 CSN 与消费者上的 CSN 进行对比。如果它较低,则从本地更改日志检索更新,并复制到消费者。在启用了部分复制功能的复制拓扑中,这可能会导致问题:例如,如果只对复制中排除的供应商更新属性,则不会找到更新,因此消费者上不会更新 CSN。在某些情况下,比如仅在复制中排除的供应商上只更新属性,则供应商上的不必要的搜索更新可能会导致其他服务器在所需的 之后接收数据。要临时解决这个问题,Directory 服务器使用 keep-alive 条目。
如果供应商中的所有更新属性都不包括在复制中,并且跳过的更新数量超过 100,则供应商中会更新 keepalivetimestamp 属性,并复制到消费者。因为 keepalivetimestamp 属性没有从复制中排除,所以 keep-alive 条目的更新会被复制,所以消费者上的 CSN 会被更新,然后等于供应商中的属性。下次连接消费者时,只会搜索消费者上的 CSN 更新。这可减少供应商搜索要发送的新更新所花费的时间。
目录服务器会根据供应商根据需要自动创建复制 keep-alive 条目。它包含供应商在可分辨名称(DN)中的副本 ID。每个 keep-alive 条目都特定于一个给定的提供者。例如,显示隐藏的 keep-alive 条目:
# ldapsearch -D "cn=Directory Manager" -b "dc=example,dc=com" -W -p 389 -h server.example.com -x 'objectClass=ldapsubentry'

dn: cn=repl keep alive 1,dc=example,dc=com
objectclass: top
objectclass: ldapsubentry
objectclass: extensibleObject
cn: repl keep alive 1
keepalivetimestamp: 20181112150654Z
Copy to Clipboard Toggle word wrap
在以下情况下更新 keep-alive 条目(如果在更新前不存在,则首先创建它):
  • 当部分复制协议跳过超过 100 个更新时,在结束复制会话前不会发送任何更新。
  • 当供应商初始化消费者时,最初它会创建自己的 keep-alive 条目。也是供应商的消费者不会创建自己的 keep-alive 条目,除非它也初始化另一个消费者。

15.11.3. 防止 "Empty" 更新进行复制

部分复制允许从复制更新中删除的属性列表(nsDS5ReplicatedAttributeList)。但是,对 exclude 属性的更改仍然会触发修改事件并生成空的复制更新。
nsds5ReplicaStripAttrs 属性添加一个无法在空复制事件中发送的属性列表,并从更新序列中分离。这个逻辑上包括操作特定点,如 修饰符名称
例如,假设 accountUnlockTime 属性被排除。John Smith 的用户帐户被锁定,然后过期时间,并自动解锁。只有 accountUnlockTime 属性已更改,且该属性不包括在复制中。但是,操作属性 internalmodifytimestamp 改变。触发复制事件,因为 John Smith 的用户帐户被修改 - 但是唯一要发送的数据是新的修改时间戳,否则更新是 emtpy。如果有大量与登录时间或密码过期时间相关的属性(例如,这可能会造成大量空复制更新,这会影响服务器性能或对关联的应用程序有影响。
要防止这种情况,请在复制协议中添加 nsds5ReplicaStripAttrs 属性,以帮助调整部分复制行为:
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set \
     --suffix="suffix" \
     --strip-list="modifiersname modifytimestamp internalmodifiersname" \
     agreement_name
Copy to Clipboard Toggle word wrap
如果复制事件 不为空 剥离的属性仍然与其他更改一起复制。只有在事件是 emtpy 时,这些属性才会从更新中删除。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat