Symas employee?Sign in

← Knowledge Base

Maintenance

Compact MDB File Size

Date: 17-01-2022

Compacting an LMDB database using mdb_copy involves creating a new, smaller copy of the database by omitting free pages and renumbering the remaining pages sequentially. This process can reduce the overall size of the database file, especially if there has been significant data deletion or modification that has left behind many free pages.

mdb_copy is part of the mdbtools package and can be installed using:

sudo apt update
sudo apt install mdbtools

While mdb_copy can create a consistent copy even with active read transactions, it is generally recommended to minimize or eliminate active write transactions during the compaction process to ensure the most up-to-date and accurate copy.

1. Stop the slapd process:

sudo systemctl stop slapd 

or

sudo service slapd stop 

2. Make a backup location. Choose a location with enough space:

mkdir /tmp/backup

3. Use mdb_copy to make a non-sparse copy of the database. -c may be used while copying to compact the mdb file. Only current data pages will be copied when using -c; freed or unused pages will be omitted from the copy. This option will slow down the backup process as it is more CPU-intensive. Currently it fails if the environment has suffered a page leak.

mdb_copy /var/symas/openldap-data// /tmp/backup/

or

mdb_copy -c /var/symas/openldap-data// /tmp/backup/

4. Remove existing .mdb files from /var/symas/openldap-data:

sudo rm -rf /var/symas/openldap-data//*.mdb 

5. Replace with the copy that you created with mdb_copy:

sudo cp /tmp/backup/*.mdb /var/symas/openldap-data//

6. Start solserver/slapd:

sudo systemctl start slapd

or

sudo service slapd start