This may not be the politically correct thing to say here, but, it is my experience and YMMV.
BDB is very stable and reliable, once you get the right combination of configuration figured out. There's lots of different things that need to be set up to get BDB stable and many of them are less than obvious in the installation process.
Running db_recover before EVERY startup is safe and, in my experience, virtually necessary. If the shutdown was clean, db_recover will quickly figure out that it doesn't have to do anything and move on.
Another important thing is to get DB_CONFIG set up correctly.
Here's my LDAP startup script which has been mostly stable:
#!/bin/bash # # ldap This shell script takes care of starting and stopping # ldap servers (slapd and slurpd). # # chkconfig: - 39 61 # description: LDAP stands for Lightweight Directory Access Protocol, used \ # for implementing the industry standard directory services. # processname: slapd # config: /etc/openldap/slapd.conf # pidfile: /var/run/slapd.pid
# Source function library. . /etc/init.d/functions
# Source networking configuration and check that networking is up. if [ -r /etc/sysconfig/network ] ; then . /etc/sysconfig/network [ ${NETWORKING} = "no" ] && exit 0 fi
# Source an auxiliary options file if we have one, and pick up OPTIONS, # SLAPD_OPTIONS, and SLURPD_OPTIONS. if [ -r /etc/sysconfig/ldap ] ; then . /etc/sysconfig/ldap fi
slapd=/usr/sbin/slapd slurpd=/usr/sbin/slurpd slaptest=/usr/sbin/slaptest [ -x ${slapd} ] || exit 0 [ -x ${slurpd} ] || exit 0
RETVAL=0
function stop() { # Stop daemons. prog=`basename ${slapd}` echo -n $"Stopping $prog: " killproc ${slapd} RETVAL=$? echo if [ $RETVAL -eq 0 ]; then if grep -q "^replogfile" /etc/openldap/slapd.conf; then prog=`basename ${slurpd}` echo -n $"Stopping $prog: " killproc ${slurpd} RETVAL=$? echo fi fi [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ldap /var/run/slapd.args return $RETVAL }
# See how we were called. case "$1" in start) start ;; stop) stop ;; status) status ${slapd} if grep -q "^replogfile" /etc/openldap/slapd.conf ; then status ${slurpd} fi ;; restart) stop start ;; condrestart) if [ -f /var/lock/subsys/ldap ] ; then stop start fi ;; *) echo $"Usage: $0 {start|stop|restart|status|condrestart}" RETVAL=1 esac
exit $RETVAL
Here is my DB_DONRIG file:
# In Memory Cache Size set_cachesize 0 8388608 0
# Log Values set_lg_regionmax 1048576 set_lg_max 10485760 set_lg_bsize 2097152 set_lg_dir /var/lib/ldap/bdb-logs
# Temporary file location set_tmp_dir /tmp
Hope that helps.
Owen
Attachment:
pgpQvPWOKWFVa.pgp
Description: PGP signature