Ограничение использования журнала транзакций Openldap

Openldap (в частности, версия 2.4) сохраняет историю транзакций в файлах журналов по умолчанию в каталоге данных ldap (так что /var/lib/ldap/log.########### ). В настоящее время эти файлы журналов занимают много места, никогда не удаляются автоматически и растут бесконечно. Ручное удаление для старых журналов работает нормально, но я бы хотел ограничить количество журналов slapd сохраняются автоматически.

МОЙ СЦЕНАРИЙ

Я знаю, что эти журналы транзакций используются для восстановления ldap в случае катастрофического сбоя. В моем сценарии ldap регулярно стирается и заполняется скриптом (это не используется для учетных записей системного входа). Из-за этого мне не нужно заботиться о выздоровлении, в случае неудачи допустимо снова запустить сценарий. С другой стороны, обычная очистка / совокупность ldap включает в себя множество транзакций, поэтому эти журналы транзакций быстро растут.

LogRotate

logrotate имеет потенциал здесь, но если самый последний журнал транзакций когда-либо удаляется, slapd не запускается (он будет жаловаться на необходимость восстановления). Потому что я не могу полагаться на имена журналов (потому что slapd хранит много небольших журналов, увеличивая число файлов журнала, когда оно идет) Я бы хотел использовать настройки Berkeley DB, которые создают эти журналы. Я могу рассчитывать на даты доступа / создания (самая последняя дата изменения – это самый последний журнал транзакций), но я по-прежнему предпочитаю использовать Berkeley, если это возможно.

DB_CONFIG

Настройки журналов транзакций, как говорят, контролируются настройками Berkeley DB в /var/lib/ldap/DB_CONFIG . Пример DB_CONFIG который поставляется с openldap, указывает некоторые параметры журнала транзакций:

 set_lg_regionmax 262144 set_lg_bsize 2097152 

Согласно документации Oracle по Berkeley:

 set_lg_regionmax: Set the size of the underlying logging area of the Berkeley DB environment, in bytes. The log region is used to store filenames, and so may need to be increased in size if a large number of files will be opened and registered with the specified Berkeley DB environment's log manager. 

Таким образом, это просто задает размер файла, который отслеживает файлы журнала транзакций.

 set_lg_bsize: Set the size of the in-memory log buffer, in bytes. 

Это, по-видимому, определяет, сколько ОЗУ выделено для буфера транзакций.

Файлы log.########### в каталоге данных ldap представляют собой все 10485760 байт, которые, по-видимому, близко соответствуют set_lg_bsize ( 10485760 / 5 = 2097152 = set_lg_bsize ), хотя я не уверен, что это совпадение.

Моя интерпретация этого состоит в том, что количество операций $lg_bsize истории транзакций хранится в памяти одновременно. Когда этот предел превышен, он переводит часть истории транзакций в самый последний файл журнала и создает новый журнал, если текущий журнал достигает определенного размера.

DB_LOG_AUTOREMOVE

Согласно DB_LOG_AUTOREMOVE транзакций документации Berkeley можно удалить данные, установив флаг DB_LOG_AUTOREMOVE в DB_CONFIG .

 DB_LOG_AUTOREMOVE: If set, Berkeley DB will automatically remove log files that are no longer needed. 

Однако, когда я добавил это в DB_CONFIG :

 set_flags DB_LOG_AUTOREMOVE 

и перезапустил slapd Я не заметил разницы. Я удалил старые журналы транзакций и запустил сценарий популяции ldap, который у меня есть, и смог 290MB в журналах транзакций. По-видимому, он все еще не ограничивает журналы. Причина этого может быть связана с фразой: that are no longer needed

Актуальный вопрос

Как настроить автоматическое удаление журналов транзакций slapd с помощью файла DB_CONFIG Berkeley DB?

Linux и Unix - лучшая ОС в мире.