15.10. 从复制拓扑中删除目录服务器实例
在某些情况下,如硬件中断或结构性更改,管理员希望从复制拓扑中删除目录服务器实例。本节介绍删除实例的详细信息。
15.10.1. 从 Replication Topology 中删除 Consumer 或 Hub 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
从复制拓扑中删除消费者或 hub:
- 如果要删除的主机是 hub,也是拓扑中其他服务器的供应商,请配置其他供应商或 hub 将数据复制到这些服务器。如果这些服务器没有配置其他供应商,并且删除了 hub,则这些服务器会与复制拓扑隔离。有关配置复制的详情,请参考:
- 在要删除的主机上,将数据库设置为只读模式以防止任何更新:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h host-to-remove.example.com -x dn: cn=userRoot,cn=ldbm database,cn=plugins,cn=config changetype: modify replace: nsslapd-readonly nsslapd-readonly: on - 在与要删除的主机具有复制协议的所有供应商中,删除复制协议。例如:
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt \ delete --suffix="dc=example,dc=com" agreement_name - 在消费者或 hub 上,删除所有后缀的禁用复制。例如:
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication \ disable --suffix="dc=example,dc=com"禁用复制会自动在此服务器上删除此后缀的所有复制协议。
15.10.2. 从复制拓扑中删除供应商 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
从复制拓扑中完全从复制拓扑中删除供应商比删除消费者或 hub 更复杂。这是因为拓扑中的每个供应商都存储有关其他供应商的信息,即使供应商突然不可用也是如此。
目录服务器在一组名为副本更新向量(RUV)的元数据中维护复制拓扑的信息。RUV 包含有关供应商的信息,如其 ID、URL、本地服务器上的最新更改状态号(CSN),以及第一次更改的 CSN。供应商和消费者都存储 RUV 信息,它们使用它来控制复制更新。
要完全删除供应商,您必须将其 meta 数据与配置条目一起删除。
- 如果要删除的副本也是拓扑中其他服务器的供应商,请配置其他供应商或 hub 将数据复制到这些服务器。如果这些服务器没有配置其他供应商,并且删除了供应商,则这些服务器会与复制拓扑隔离。有关配置复制的详情,请参考:
- 在要删除的供应商中:
- 将数据库设置为只读模式,以防止任何更新。详情请查看 第 2.2.2.1 节 “在只读模式下设置数据库”。
- 等待拓扑中的所有其他服务器都收到此供应商的所有数据。要验证,请确保其他服务器上的 CSN 等于或大于供应商中的 CSN 来删除。例如:
# ds-replcheck online -D "cn=Directory Manager" -w password -m ldap://replica-to-remove.example.com:389 -r ldap://server.example.com:389 -b dc=example,dc=com ================================================================================ Replication Synchronization Report (Tue Mar 5 09:46:20 2019) ================================================================================ Database RUV's ===================================================== Supplier RUV: {replica 1 ldap://replica-to-remove.example.com:389} 5c7e8927000100010000 5c7e89a0000100010000 {replicageneration} 5c7e8927000000010000 Replica RUV: {replica 1 ldap://replica-to-remove.example.com:389} 5c7e8927000100010000 5c7e8927000400010000 {replica 2 ldap://server.example.com:389} {replicageneration} 5c7e8927000000010000 - 显示副本 ID:
# dsconf -D "cn=Directory Manager" ldap://replica-to-remove.example.com replication get --suffix="dc=example,dc=com" | grep -i "nsds5replicaid" nsDS5ReplicaId: 1在本例中,副本 ID 是 1。记住此过程的最后一步的副本 ID。
- 在具有要删除的副本的复制协议的所有供应商中,删除复制协议。例如:
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt \ delete --suffix="dc=example,dc=com" agreement_name - 在要删除的副本上,禁用所有后缀的复制。例如:
# dsconf -D "cn=Directory Manager" ldap://replica-to-remove.example.com replication \ disable --suffix="dc=example,dc=com"禁用复制会自动在此服务器上删除此后缀的所有复制协议。 - 在拓扑中剩余的供应商中,清理副本 ID 的 RUV。例如:
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-tasks \ cleanallruv --suffix="dc=example,dc=com" --replica-id=1该命令需要指定此流程前面步骤中显示的副本 ID。