Menu Close
15.18. Trimming the Replication Changelog
The Directory Server changelog manages a list of received and processed changes. It includes changes of clients ran on the server and additionally directory changes from other replication partners. Using the default settings, Directory Server does not automatically remove entries and the changelog grows infinitely. To control which entries are removed, use the following parameters:
nsslapd-changelogmaxage
(recommended): Removes entries if they exceed the time set in this parameter.nsslapd-changelogmaxentries
: Removes the oldest entries if the total number of records exceed the value set in this parameter.
Any record and all subsequently created records remains in the changelog until it is successfully replicated to all servers in the topology. For example, this occurs in a situation when a Directory Server supplier was removed from the topology, but the replica update vector (RUV) had not been removed.
15.18.1. Enabling Replication Changelog Trimming
You can configure Directory Server to remove entries from the changelog that are older than a specific time. You can also configure entries to be automatically removed if the number of entries exceeds a configured value. This section describes how to configure changelog trimming.
Note
Red Hat recommends setting a maximum age instead of a maximum number of entries. The maximum age should match the replication purge delay set in the
nsDS5ReplicaPurgeDelay
parameter in the cn=replica,cn=suffixDN,cn=mapping tree,cn=config
entry.
Perform this procedure on the supplier:
- Configure change log trimming:
- To set a maximum age of changelog entries, enter:
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "4w"
This command sets the maximum age to 4 weeks. The parameter supports the following units:s
for secondsm
for minutesh
for hoursd
for daysw
for weeks
- To set a maximum number of entries, enter:
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-entries "100000"
This command sets the maximum number of entries in the changelog to 100,000.
- By default, Directory Server trims the changelog every 5 minutes (
300
seconds). To set a different interval, enter:# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --trim-interval 600
This command sets the interval to 10 minutes (600
seconds).
15.18.2. Manually Reducing the Size of a Large Changelog
In certain situations, such as if replication changelog trimming was not enabled, the changelog can grow to an excessively large size. To fix this, you can reduce the changelog size manually.
This procedure describes how to trim the changelog of the
dc=example,dc=com
suffix. Perform this procedure on the supplier.
- Optional: Display the size of the changelog:
- Identify the back-end database of the
dc=example,dc=com
suffix:# dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list dc=example,dc=com (userroot)
The name in parentheses is the back-end database that stores the data of the corresponding suffix. - Display the size of the changelog file of the
userroot
backend:# ls -lh /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db -rw-------. 1 dirsrv dirsrv 517M Jul 5 12:58 /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db
- To be able to reset the parameters after reducing the changelog size, display and note the current values of the corresponding parameters:
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication get-changelog --suffix "dc=example,dc=com" dn: cn=changelog,cn=userroot,cn=ldbm database,cn=plugins,cn=config cn: changelog nsslapd-changelogmaxage: 4w nsslapd-changelogmaxentries: 50000 nsslapd-changelogtrim-interval: 300
Parameters that are not displayed in the output are not set, and Directory Server uses their default values. - Temporarily, reduce trimming-related parameters:
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "300s" --max-entries 500 --trim-interval 60
Important
For performance reasons, do not permanently use too short interval settings. - Wait until the time set in the
--trim-interval
parameter has expired. - Compact the changelog to regain disk space:
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelog
- Reset the changelog parameters to the values they had before you temporarily reduced them:
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "4w" --max-entries 50000 --trim-interval 300
- Optional: Display the size of the changelog:
# ls -lh /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db -rw-------. 1 dirsrv dirsrv 12M Jul 5 12:58 /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db