Problem: Prune transaction log

Problem:

An UCS master records each transaction done by the univention-directory-notifier. In larger environments with a high count of LDAP changes, the size grows steadily.

Possible footnotes can be:

  • The join of new UCS systems is slow.
  • The start of the univention-directory-notifier daemon may be slow.

Solution:

Step 1

If each system in the domain is (mostly) at the same replication level (see UCS manual: Analysis of listener/notifier problems for further analysis in doubt) you can safely downsize the transaction file by keeping only a certain amount of transactions.

Note: If you want to clean your transactions from a certain point in time, check this article

To cleanup everything but keeping the last 10000 entries you may use these steps at the DC Master:

root@ucs:~# tail -n 10000 /var/lib/univention-ldap/notify/transaction | head -n1
80802 relativeDomainName=ucs-sso,zoneName=domain.tld,cn=dns,dc=domain,dc=tld m

# /usr/share/univention-directory-notifier/univention-translog [-v] prune <TID>
root@ucs:~# /usr/share/univention-directory-notifier/univention-translog -v prune 80802
2019-07-15 12:44:06,103:INFO:Index of size 818018 contains 90802 entries
2019-07-15 12:44:06,104:INFO:Purging/keeping 1..80802..90802
2019-07-15 12:44:06,169:INFO:Deleted reqSession=1,cn=translog
2019-07-15 12:44:06,170:INFO:Deleted reqSession=2,cn=translog
...
2019-07-15 12:48:22,100:INFO:Deleted reqSession=80800,cn=translog
2019-07-15 12:48:22,101:INFO:Deleted reqSession=80801,cn=translog

Step 2 (Optional)

Optionally, after that the free pages can be cleaned up. But technically that’s not required and the necessity should be considered in relation to downtime. Anyway these would be the steps:

root@ucs:~# mkdir /var/lib/univention-ldap/translog-new
root@ucs:~# systemctl stop univention-directory-notifier.service
root@ucs:~# systemctl stop slapd.service
root@ucs:~# mdb_copy -c /var/lib/univention-ldap/translog /var/lib/univention-ldap/translog-new
root@ucs:~# mv /var/lib/univention-ldap/translog /var/lib/univention-ldap/translog-old
root@ucs:~# mv /var/lib/univention-ldap/translog-new /var/lib/univention-ldap/translog
root@ucs:~# systemctl start slapd.service
root@ucs:~# systemctl start univention-directory-notifier.service

Recheck with nagios the space is freed
/usr/lib/nagios/plugins/check_univention_slapd_mdb_maxsize

see also:

1 Like
Mastodon