15.10. 从复制拓扑中删除目录服务器实例
在某些情况下,如硬件中断或结构更改,管理员希望从复制拓扑中删除目录服务器实例。本节介绍有关删除实例的详细信息。
15.10.1. 从 Replication Topology 中删除 Consumer 或 Hub
从复制拓扑中删除消费者或 hub:
- 如果要删除的主机是 hub,以及拓扑中其他服务器的供应商,请配置其他供应商或 hubs 以将数据复制到这些服务器。如果这些服务器没有配置其他供应商,并且删除了 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 信息,它们使用它来控制复制更新。
要完全删除供应商,您必须删除其元数据以及配置条目。
- 如果要删除的副本也是拓扑中其他服务器的供应商,请配置其他供应商或 hubs 以将数据复制到这些服务器。如果这些服务器没有配置其他供应商,并且删除了供应商,则这些服务器会与复制拓扑隔离。有关配置复制的详情,请参考:
- 在要删除的供应商中:
- 将数据库设置为只读模式,以防止任何更新。详情请查看 第 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。