第 21 章 解决常见的复制问题


multi-supplier 复制使用最终不一致的复制模型。这意味着在不同服务器上可以更改相同的条目。当复制在两个服务器之间发生时,目录服务器需要解决冲突的更改。默认情况下,根据与每台服务器上的更改相关的时间戳,自动进行解析。最近的更改具有优先级。然而,在某些情况下,冲突需要人工干预才能达到解决方案。

21.1. 识别并解决命名冲突

当多个供应商服务器收到创建具有相同可分名称(DN)的条目的请求时,每个服务器会使用此 DN 和不同的条目唯一标识符(条目 ID)创建条目。条目 ID 存储在 nsuniqueid 操作属性中。

例如,Server AServer B 接收创建 uid=user_name,ou=people,dc=example,dc=com 用户条目的请求。因此,每个服务器都有自己的条目:

  • 在 Server A 中,该条目有:

    • uid=user_name,ou=people,dc=example,dc=com
    • nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b
  • 在 Server B 中,该条目有:

    • uid=user_name,ou=people,dc=example,dc=com
    • nsuniqueid=643a461e-b61311e1-b23be826-4afeed5f

在复制期间,服务器 A 将新创建的条目 uid=user_name,ou=people,dc=example,dc=com 复制到 Server B,而 Server B 将新创建的条目复制到 Server A,并在每台服务器上出现命名冲突。通过比较更改序列号(CSN),每台服务器决定之前创建的条目。例如:之前创建 Server B 中的条目。

自动冲突解析过程会按照以下方式更改创建的最后一个条目( 服务器 A上的条目):

  • nsuniqueid 值添加到非唯一的 DN 中。
  • nsds5replconflict 属性添加到操作导致冲突的描述。
  • 添加 ldapsubentry 对象类。

现在两个服务器上都存在以下条目:

  • 有效 条目带有:

    • uid=user_name,ou=people,dc=example,dc=com
    • nsuniqueid=643a461e-b61311e1-b23be826-4afeed5f
  • 冲突 条目如下:

    • nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=people,dc=example,dc=com
    • nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b

要手动解决命名冲突,请在每台服务器上执行以下步骤。

流程

  1. 列出冲突条目:

    # dsconf <instance_name> repl-conflict list dc=example,dc=com
    dn: nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=people,dc=example,dc=com
    cn: user_name
    displayName: user
    gidNumber: 99998
    homeDirectory: /var/empty
    legalName: user name
    loginShell: /bin/false
    nsds5replconflict: namingConflict (ADD) uid=user_name,ou=people,dc=example,dc=com
    objectClass: top
    objectClass: nsPerson
    objectClass: nsAccount
    objectClass: nsOrgPerson
    objectClass: posixAccount
    objectClass: ldapsubentry
    uid: user_name
    uidNumber: 99998
    Copy to Clipboard Toggle word wrap
  2. 如果存在冲突条目,则决定如何处理:

    • 要只保留有效的条目(uid=user_name,ou=people,dc=example,dc=com)并删除冲突条目,请输入:

      # dsconf <instance_name> repl-conflict delete nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com
      Copy to Clipboard Toggle word wrap
    • 要只保留冲突条目(nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com)并删除有效条目,请输入:

      # dsconf <instance_name> repl-conflict swap nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com
      Copy to Clipboard Toggle word wrap
    • 要保留这两个条目,请指定一个新的相对可分辨名称(RDN)来重命名冲突条目:

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict convert --new-rdn=uid=user_name_NEW nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=people,dc=example,dc=com
      Copy to Clipboard Toggle word wrap

      此命令将冲突条目重命名为 uid=user_name_NEW,ou=people,dc=example,dc=com

警告

目录服务器复制对冲突条目执行的 LDAP 操作。通常,使用原始操作条目的 nsuniqueid 而不是使用操作 dn 来复制操作以条目为目标。但是,当出现冲突条目时,行为可能会有所不同。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat