15.18. 修剪 Replication Changelog
Directory Server changelog 维护一个接收和处理的更改列表。它包括从复制合作伙伴收到的客户端更改和更改。
默认情况下,Directory 服务器会修剪 7 天以上的 changelog 条目。但是,您可以修改它并配置:
nsslapd-changelogmaxage参数中更改日志中的最大年龄。nsslapd-changelogmaxentries参数中更改日志中的记录总数。
如果您至少启用了这些设置之一,Directory 服务器默认每 5 分钟修剪更改日志(
nsslapd-changelogtrim-interval)。
之后创建的所有记录和记录都会保留在更改日志中,直到拓扑中的所有服务器上成功复制为止。如果您必须从拓扑中删除供应商,如 第 15.10.2 节 “从复制拓扑中删除供应商” 所述,那么目录服务器会从其它服务器上的 changelogs 中修剪此供应商的所有更新。
15.18.1. 配置复制更改 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
默认情况下,Directory 服务器会修剪 7 天以上的 changelog 条目。但是,您可以配置目录服务器可以删除条目的时间。您还可以将 Directory 服务器配置为在条目数量超过配置的值时自动删除条目。
注意
红帽建议设置最长期限而不是最大条目数。最长期限应与 cn=replica,cn=suffixDN,cn=mapping tree,cn=config 条目中的
nsDS5ReplicaPurgeDelay 参数中设置的复制清除延迟匹配。
在供应商中执行此步骤:
- 配置更改日志修剪:
- 要设置 changelog 条目的最大年龄,请输入:
dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "4w"
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "4w"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将最长期限设置为 4 周。参数支持以下单元:- s (S)
- M (S) 分钟
- H (H) (小时)
- d (D) 表示天
- W (W) 周
- 要设置最大条目数,请输入:
dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-entries "100000"
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-entries "100000"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将 changelog 中条目的最大数量设置为 100,000。
- 默认情况下,Directory 服务器每 5 分钟(300 秒)修剪更改日志。要设置不同的间隔,请输入:
dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --trim-interval 600
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --trim-interval 600Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将间隔设置为 10 分钟(600 秒)。
15.18.2. 手动缩小大型更改日志的大小 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在某些情况下,比如没有启用复制更改日志修剪,更改日志可能会增长到较大的大小。要解决这个问题,您可以手动减少 changelog 大小。
在供应商上执行此流程。
先决条件
已启用复制。
流程
- 可选:显示 changelog 的大小:
ls -lh /var/lib/dirsrv/slapd-instance_name/changelogdb/
# ls -lh /var/lib/dirsrv/slapd-instance_name/changelogdb/ total 159M rw------. 1 dirsrv dirsrv 159M Nov 21 04:01 a1cf5703-697a11ed-896ed7a0-04f329b5_637b3daf000000010000.db rw------. 1 dirsrv dirsrv 30 Nov 21 03:58 DBVERSIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow 本例显示 /var/lib/dirsrv/slapd-instance_name/changelogdb/ 目录仅包含 159M 的 changelog 文件。 - 要在缩小 changelog 大小后重置参数,请显示并记录对应参数的当前值:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果在输出中没有看到任何特定属性,Directory 服务器将使用它们的默认值。 - 临时减少与修剪相关的参数:
dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "300s" --max-entries 500 --trim-interval 60
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "300s" --max-entries 500 --trim-interval 60Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要出于性能原因,请不要永久使用较短的间隔设置。 - 等待
--trim-interval参数中设置的时间过期。 - 紧凑更改日志以重新拥有磁盘空间:
dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelog
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelogCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在临时减少它们前,将 changelog 参数重置为它们的值:
dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "7d" --max-entries 0 --trim-interval 300
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "7d" --max-entries 0 --trim-interval 300Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 显示 changelog 的大小:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow