Menu Close
Settings Close

Language and Page Formatting Options

Chapter 13. Trimming the replication changelog

The Directory Server changelog manages a list of received and processed changes. It includes changes of clients and changes received from replication partners.

By default, the Directory Server changelog grows infinitely. However, you can change this and configure:

  • A maximum age of entries in the changelog in the nsslapd-changelogmaxage parameter
  • The total number of records in the changelog in the nsslapd-changelogmaxentries parameter.

If at least one of these settings is enabled, Directory Server trims the changelog every 5 minutes by default.

Even with the trimming settings enabled, any record and all subsequently created records remain in the changelog until they are successfully replicated to all servers in the topology. However, if you removed a supplier from the topology, but not the replica update vector (RUV), the entries stay in the changelog. In this case, trim the changelog manually.

13.1. Configuring replication changelog trimming using the command line

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 for the dc=example,dc=com suffix.

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.

Prerequisites

  • You enabled replication for the dc=example,dc=com suffix.

Procedure

  1. 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 --suffix "dc=example,dc=com" --max-age "4w"

      This command sets the maximum age to 4 weeks. The parameter supports the following units:

      • s for seconds
      • m for minutes
      • h for hours
      • d for days
      • w for weeks
    • To set a maximum number of entries, enter:

      # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-entries "100000"

      This command sets the maximum number of entries in the changelog to 100,000.

  2. 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 --suffix "dc=example,dc=com" --trim-interval 600

    This command sets the interval to 10 minutes (600 seconds).

Verification

  • Display the changelog settings of the suffix:

    # 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-changelogtrim-interval: 600
    ...

    The command only displays the parameters that are different to their default.

13.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.

Prerequisites

  • You enabled replication for the dc=example,dc=com suffix.

Procedure

  1. Optional: Display the size of the changelog:

    1. 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.

    2. 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
  2. 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.

  3. 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.

  4. Wait until the time set in the --trim-interval parameter has expired.
  5. Compact the changelog to regain disk space:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelog
  6. 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

Verification

  • 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