15.26. 对复制问题进行故障排除
本节列出了一些错误消息、解释可能的原因,并提供补救。
通过将错误日志级别设置为 8192 (这是复制调试)来获取更多复制信息。请参阅 第 21.3.7 节 “配置日志级别”。
将错误日志级别改为 8192 :
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-errorlog-level=8192
由于日志级别是添加的,因此运行上述命令将导致错误日志中过量的信息。因此,请谨慎使用。
15.26.1. 可能的与复制相关的错误消息
以下小节描述了许多常见的复制问题。
agmt=%s (%s:%d) Replica 与本地数据有不同的生成 ID
- reason: 在此消息开始时指定的消费者尚未被(成功)初始化,或者它是从不同的 root 供应商初始化。
- 影响 :本地供应商不会将任何数据复制到消费者。
- Remedy :如果在消费者初始化前发生,则忽略此消息。否则,如果消息持久,重新初始化使用者。在多层次环境中,所有服务器应只从根供应商(直接或间接)初始化一次。例如,M1 初始化 M2 和 M4,M2 然后初始化 M3,以此类推。需要注意的是,M2 必须在完成 M2 自己的初始化前开始初始化 M3 (检查 M1 的 web 控制台或 M1 或 M2 错误日志的总更新状态)。此外,M2 不应初始化 M1。
警告:副本的数据被重新载入,它不再与 changelog 中的数据匹配。重新创建 changelog 文件。这可能会影响使用副本使用者的复制,在这种情况下,应该重新初始化消费者。
- reason: 只有在重启供应商时才会显示此消息。这表示供应商无法写入更改日志,或者在最后一次关闭时没有清除其 RUV。前者通常是由于磁盘空间问题造成的,后者是因为服务器崩溃或未正常关闭。
- 影响: 如果消费者的
maxcsn
在服务器的 changelog 中不再存在,服务器将无法向消费者发送更改。 - 补救:检查磁盘空间和可能的核心文件(在服务器日志目录下)。如果这是单层次复制,请重新初始化消费者。否则,如果服务器稍后认为它无法找到消费者的一些 CSN,请查看消费者是否可以从其他供应商获取 CSN。如果没有,重新初始化消费者。
agmt=%s (%s:%d):无法在更改日志中找到 CSN %s (DB rc=%d)。可能需要重新初始化使用者。
- 原因:由于磁盘已满或者服务器无法正常关闭,所以大多数更改更改可能无法重新创建。
- 影响:本地服务器将无法向该消费者发送任何进一步的更改,直到消费者重新初始化或从其他供应商获得 CSN。
- Remedy :如果这是单层次复制,请重新初始化消费者。否则,请查看消费者是否可以从其他供应商获取 CSN。如果没有,重新初始化消费者。
过长的时间偏移
- reason: 主机机器上的系统时钟非常不同步。
- 影响 :系统时钟用于生成 CSN 的一部分。为了反映多个供应商之间的更改序列,供应商将根据其他供应商的远程时钟转发其本地时钟。由于调整仅限于特定数量,超过允许的限制的差异将导致复制会话被终止。
- 补救:同步目录服务器主机上的系统时钟。如果适用,在这些主机上运行网络时间协议(
ntp
)守护进程。
agmt=%s (%s:%d): Warning: Unable to send endReplication extended operation (%s)
- reason: consumer 没有响应。
- 影响:如果消费者在没有重启的情况下恢复,则消费者上的副本将在每次没有从供应商接收发行锁定消息时被锁定。
- Remedy:如果消费者可以从任何供应商收到任何新更改,或者启动复制监控器,并查看这个消费者的所有供应商是否都警告副本忙碌。如果副本似乎被锁定,且没有供应商无法获得,重启消费者。
更改日志太大。
- 原因:关闭更改日志清除(默认设置)或更改更改清除被开启,但有些用户在供应商后面是连接的。
- Remedy :默认情况下,changelog 清除被关闭。要从命令行打开它,请运行 ldapmodify,如下所示:
ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=changelog5,cn=config changetype: modify add: nsslapd-changelogmaxage nsslapd-changelogmaxage: 1d
1d 表示 1 天。其他有效的时间单位为 s 秒,m 代表分钟,h 代表小时,w 代表周。值 0 会关闭清除。打开更改日志清除后,如果其年龄大于 nsslapd-changelogmaxage 值,且已重新分配给此供应商(supplier 或 hub)的所有直接消费者,则清除线程将删除一次更改。如果出现在达到清除阈值时更改日志没有清除,请检查所有消费者中的复制监控器的最大时间。无论清除阈值是什么,在被所有消费者重新执行之前,不会清除任何更改。
Replication Monitor 没有响应。
- 原因:LDAPS 端口在某些复制协议中指定,但复制监控器没有指定或无法访问证书数据库。如果没有 LDAPS 端口问题,复制拓扑中的一个服务器可能会挂起。
- Remedy :在 Replication Monitor 的配置文件中将 TLS 端口映射到非 TLS 端口。例如,如果 636 是 TLS 端口,并且 389 是非 TLS 端口,请在
[connection]
部分添加以下行:*:636=389:*:password
在 Replication Monitor 中,一些使用者只显示表的标头。
- 原因:没有变化来自相应的供应商。在这种情况下,标头部分中的
MaxCSN
: 应该为 "None "。 - 补救:如果没有因供应商造成变化,则不会出错。