--On Thursday, June 15, 2023 10:51 PM +0200 sacawulu cyusedfzfb@gmail.com wrote:
Most of these things can be done similarly in 2.4/bdb and 2.5/mbd but not the db_verify, which is bdb specific.
I don't find a lot of info on the maintenance / integrity checks that can be done on mdb databases. In fact: Mostly what I can find is: "MDB uses no caching and requires no tuning to deliver maximum search performance"
There's very little necessary to be done when using back-mdb as you've already discovered
That is very good. :-) We have already discovered that we need to increase maxsize, as our database is (much) larger than 10MB.
The rule of thumb for maxsize is to set it to something larger than you ever expect to hit. For example, with a database I'm using that's ~3.4GB in size, I have a 20GB maxsize set. You may want to monitor the size of your database vs the configured maxsize. This can be done with data available in the back-monitor database (at least with 2.6, not sure with 2.5) or via the mdb_stat utility.
python-ldap3 snippet using back-monitor:
try: tls = Tls(validate=ssl.CERT_NONE, version=ssl.PROTOCOL_TLSv1_2) conn = Connection(Server(ldap_url, tls=tls, use_ssl=True), auto_bind=True) conn.search( "cn=monitor", "(&(objectClass=olmMDBDatabase))", attributes=["olmMDBPagesMax", "olmMDBPagesUsed", "namingContexts"], )
for db in conn.entries: suffix = db.namingContexts.value # 4096 is the page size in use # can be found with mdb_stat -e /path/to/database max_size = int(db.olmMDBPagesMax.value) * 4096 current_size = int(db.olmMDBPagesUsed.value) * 4096 pct_used = float(current_size / max_size * 100)
Anyone else with tips and tricks on daily maintenance or monitoring? Scripts to share..? Perhaps zabbix templates..?
The only other bits I would recommend is if you have object in the directory that have very large multi-valued attribute data. For example, if you use groups extensively, and the 'member' attribute has hundreds of entries, you would probably want to do something like:
a) Add member as an attribute to be handled by olcSortvals
b) Add a multival configuration to back-mdb if the attribute is indexed. For example, if you indexed member "eq". I usually do 100,10. This will put the index databse into its own subdb, which helps keep fragmentation from being an issue.
For example, I had a ~5.5GB DB that was swelling to over 11GB in size due to fragmentation before implementing those two configuration options.
Regards, Quanah