LDAP: « bdb_db_open: unclean shutdown detected »

Lundi matin, une journée qui commence bien. Le service « slapd » étant arrêté, je me jette dans les logs et voilà ce que j’y trouve:
bdb_db_open: unclean shutdown detected; attempting recovery.
bdb_db_open: Recovery skipped in read-only mode. Run manual recovery if errors are encountered.


Après quelques recherches sur « db_recover » et après avoir essayé de lire les pages man introuvables… je me lance à la sauvage:
/etc/init.d/ldap stop
db_recover -v -h /var/lib/ldap
/etc/init.d/ldap start

Le service repart, puis s’écroule quelques minutes plus tard en m’insultant de la même façon. Seule option restante: Récupérer les .bdb stocké sur la bande de sauvegarde de la veille:
/etc/init.d/ldap stop
A la recherche de mes fichiers:
tar tvf /dev/st0 | grep *.bdb
Ouf, tout est là: On restaure.
tar xvf /dev/st0 var/lib/ldap
Si, comme moi, vos fichiers font plus de 2Go, allez donc boire une cafetière de café.. ou prendre un Xanax..
slapd -d 256
Je vous passe le tas de logs qu’il m’a vomi à ce moment précis -c’est plutôt bon signe- il est enfin lancé… et à l’air de s’y plaire. Attention à ne pas le stopper à l’aide d’un CTRL+C, ce qui pourrais causer une nouvelle corruption ! Pour cela on va lui demander plus poliment:
kill -INT ‛cat /var/run/ldap/slapd.pid‛
Puis on relance, proprement:
/etc/init.d/ldap start

Note: n’oubliez pas de vérifier que les fichiers contenus dans le répertoire /var/lib/ldap appartiennent bien à ldap:ldap après la restauration, c’est du vécu..

Possibly Related Posts:



This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

28 responses so far, want to say something?

  1. anass says:

    bonjour adrien
    voila je suis entrain de mettre en place un serveur openldap sous fedora 10 et lorsque je lance service ldap start
    il m envoie les erreurs suivantes:

    bdb_db_open: database « dc=glaizer,dc=net »: unclean shutdown detected; attempting recovery.
    bdb_db_open: database « dc=glaizer,dc=net »: recovery skipped in read-only mode. Run manual recovery if errors are encountered.
    bdb(dc=glaizer,dc=net): /var/lib/ldap/dn2id.bdb: file size not a multiple of the pagesize
    bdb_db_open: database « dc=glaizer,dc=net »: db_open(/var/lib/ldap/dn2id.bdb) failed: Invalid argument (22).
    bdb(dc=glaizer,dc=net): Database handles still open at environment close
    bdb(dc=glaizer,dc=net): Open database handle: id2entry.bdb
    bdb_db_close: database « dc=glaizer,dc=net »: close failed: Invalid argument (22)
    backend_startup_one: bi_db_open failed! (22)
    slap_startup failed (test would succeed using the -u switch)
    stale lock files may be present in /var/lib/ldap

    apparemment vous vous y connaissez bcp plus que moi qui suis debutant si vous avez des documents pour m aider ou des commandes pour resoudre ces erreurs priere de m aider
    et merci

  2. Adri says:

    avez vous essayé le:
    # db_recover -v -h /var/lib/ldap

  3. anass says:

    oui
    fedora ne reconnait pas db_recover :s
    # db_recover -v -h /var/lib/ldap
    bash: db_recover: command not found

  4. Adri says:

    ok, est ce que le paquet « db4.2-util » (ou une version différente) est installé ?

  5. anass says:

    alors la aucune idée il sert a koi
    voici ce que j ai obtenu en essayant de l installé

    yum install db4.2-util
    Modules complémentaires chargés : refresh-packagekit
    fedora | 2.8 kB 00:00
    updates | 2.3 kB 00:00
    adobe-linux-i386 | 951 B 00:00
    Configuration du processus d’installation
    Traitement des options d’installation des paquetages
    No package db4.2-util available.
    Rien à faire

    il sert a koi et sinon quelles sont les autres versions et merci

  6. Adri says:

    je ne connais pas trop fédora mais après quelques recherches l’utilitaire pourrais se nommer:

    slapd_db_recover

  7. anass says:

    il dit que y a pas de slapd_db_recover available

  8. Adri says:

    Malheureusement pour toi je ne connais pas du tout l’environnement LDAP sur Fedora, a mon avis pour résoudre ton problème il te faut trouver le paquet contenant l’outil db_recover ou bien le compiler depuis les sources..

    pas de /usr/sbin/slapd_db_recover non plus ?

  9. anass says:

    c bon j ai reformaté ma machine et la ça marche comme par enchantement :D
    je te tiendrai au courant de mon evolution :p
    merci bcp

  10. anass says:

    bonjour me revoila avec une nouvelle erreur
    :)

    [root@localhost openldap]# ldapadd -W -D « cn=Manager,o=test,c=net » -xh localhost -f /etc/openldap/base.ldiff
    Enter LDAP Password:
    ldap_bind: Invalid DN syntax (34)
    additional info: invalid DN

  11. anass says:

    rebonjour j ai résolu l erreur précedente et la j ai celle ci

    [root@localhost openldap]# ldapadd -W -D ‘cn=manager,dc=society,dc=net’ -xh localhost -f /home/anass/Bureau/society.txt
    Enter LDAP Password:
    ldap_bind: Invalid credentials (49)

    et je m excuse pour le derangement

  12. Adri says:

    Comme l’erreur le dit: problème de mot de passe ;)

  13. anass says:

    je l ai changé avec la commande slappasswd : {SSHA}WW2PMcKsh0ZVrFFSuwAtAXIUISAq1VIU
    et remplacé dans le slapd.conf et dans base et tjrs le mm probleme

    voici mon fichier base.ldif:
    # Organization for Samba Base

    dn: dc=society,dc=net

    objectclass: dcObject

    objectclass: organization

    dc: glaizer

    o: Samba 3

    description: Samba 3

    # Manager LDAP

    dn: cn=manager,dc=society,dc=net

    objectclass: organizationalRole

    cn: manager

    description: LDAP Manager

    # Conteneur d’utilisateurs

    dn: ou=Users,dc=society,dc=net

    objectclass: top

    objectclass: organizationalUnit

    ou: Users

    # Conteneur de machines

    dn: ou=Computers,dc=society,dc=net

    objectclass: top

    objectclass: organizationalUnit

    ou: Computers

    # Administrateur

    dn: cn=admin,ou=Users,dc=society,dc=net

    cn: admin

    objectclass: top

    objectclass: organizationalRole

    objectclass: simpleSecurityObject

    userPassword: {SSHA}WW2PMcKsh0ZVrFFSuwAtAXIUISAq1VIU

  14. anass says:

    voila adri c ma configuration et je vois pas prkoi ça ne marche pas :s

    [root@localhost anass]# ldapadd -D « cn=manager,o=company,c=net » -W -f /etc/openldap/base.ldif
    Enter LDAP Password:
    SASL/DIGEST-MD5 authentication started
    ldap_sasl_interactive_bind_s: Invalid DN syntax (34)

    here is my ldap.conf:

    # LDAP Defaults
    #

    # See ldap.conf(5) for details
    # This file should be world readable but not world writable.

    #BASE dc=example,dc=com
    #URI ldap://ldap.example.com ldap://ldap-master.example.com:666

    #SIZELIMIT 12
    #TIMELIMIT 15
    #DEREF never
    URI ldap://127.0.20.1/
    BASE dc=company,dc=net
    TLS_CACERTDIR /etc/openldap/cacerts
    [/SIZE][/SIZE]

    my base.ldif is :

    #Organization for Samba Base

    dn: dc=company,dc=net

    objectclass: dcObject

    objectclass: organization

    dc: company

    o: Samba 3

    description: Samba 3

    # Manager LDAP

    dn: cn=manager,dc=company,dc=net

    objectclass: organizationalRole

    cn: manager

    description: LDAP Manager

    # Conteneur d’utilisateurs

    dn: ou=Users,dc=company,dc=net

    objectclass: top

    objectclass: organizationalUnit

    ou: Users

    # Conteneur de machines

    dn: ou=Computers,dc=company,dc=net

    objectclass: top

    objectclass: organizationalUnit

    ou: Computers

    # Administrateur

    dn: cn=admin,ou=Users,dc=company,dc=net

    cn: admin

    objectclass: top

    objectclass: organizationalRole

    objectclass: simpleSecurityObject

    userPassword: {SSHA}WW2PMcKsh0ZVrFFSuwAtAXIUISAq1VIU

    and my slapd.conf is:

    #######################################################################
    # ldbm and/or bdb database definitions
    #######################################################################

    database bdb
    suffix « dc=company,dc=net »
    checkpoint 1024 15
    rootdn « cn=manager,dc=company,dc=net »
    # Cleartext passwords, especially for the rootdn, should
    # be avoided. See slappasswd(8) and slapd.conf(5) for details.
    # Use of strong authentication encouraged.
    # rootpw secret
    rootpw {SSHA}WW2PMcKsh0ZVrFFSuwAtAXIUISAq1VIU

    # The database directory MUST exist prior to running slapd AND
    # should only be accessible by the slapd and slap tools.
    # Mode 700 recommended.
    directory /var/lib/ldap

    # Indices to maintain for this database
    #index objectClass eq,pres
    #index ou,cn,mail,

    # Replicas of this database
    #replogfile /var/lib/ldap/openldap-master-replog
    #replica host=ldap-1.example.com:389 starttls=critical
    # bindmethod=sasl saslmech=GSSAPI
    # authcId=host/ldap-master.example.com@EXAMPLE.COM

    # enable monitoring
    database monitor

    # allow onlu rootdn to read the monitor
    access to *
    by dn.exact= »cn=manager,dc=company,dc=net » read
    by * none

  15. bobo says:

    Bonjour,

    J’ai un gros problème sur Ldap, en effet lorsque je rentre une entrée sur le ldap maitre, celle ci va être insérée dans un fichier nommé sluprd.replog, puis grâce au daemon slurpd va être lu pour être injecté dans mon serveur de réplication ldap

    Tout fonctionne, mais si je fais genre 15 entrées le fichier slurpd.replog va être saturé en écriture et a partir de la c’est tout le serveur qui lague.Le fichier atteint les 7 GO o_O .

    Si je coupe le ldap puis le relance voila le message d’erreur :


    Vérification des fichiers de configuration pour slapd : bdb_db_open: unclean shutdown detected; attempting recovery.
    bdb_db_open: Recovery skipped in read-only mode. Run manual recovery if errors are encountered.
    config file testing succeeded

    J’ai fais un slap_db_recover mais l’erreur va réapparaitre au bout d’une quinzaine d’entrées.

    Avez vous déjà eu le problème???

    Faut t’il paramétrer le fichier DB_CONFIG ???

    Merci :p

  16. Adri says:

    Aye, je ne vais pas du tout pouvoir t’aider puisque j’ai toujours utilisé syncrepl et je ne connais pas du tout slurpd.. que disent les logs ?

  17. bobo says:

    merci de ta réponse :)

    Pour les logs rien de spécial, la réplication se fait c’est tout :(

    Je connais pas syncrepl ça marche comment???

  18. bobo says:

    Je vais tester ça demain ^^

    Ca remplace slurpd apparemment un espoir peut etre :)

  19. Adri says:

    ça marche bien !
    Plus sérieusement, tu fait quelques modifs dans les /etc/ldap/slapd.conf, tu charge le modules qui va bien… et ça roule !
    Tu as pas mal de tutos qui t’expliquerons bien mieux que moi en quelques lignes.

    http://www.google.fr/search?q=syncrepl

    ;)

  20. bobo says:

    hello toujours la???

    je veux charger ce module
    « moduleload syncprov.la »

    Mais il n’existe pas sur ma distrib :(

    Tu aurais le slapd.conf qui va bien :)

    Ou juste ce que tu as rajouter pour la réplciation sur le maitre et serveur.

    Si c’est possible :)

    Merci

  21. Adri says:

    essaye simplement: « moduleload syncprov », ça devrait rouler tout seul !

  22. bobo says:

    ok ça marche nikel merci :)

  23. bobo says:

    Par contre il faut mettre de moduleload sur centos, tout est intégré avec slapd

  24. Adri says:

    merci pour la précision ;)

  25. bobo says:

    Au fait, comprend tu précisément le fonctionnement de syncrepl?

    j’ai trouvé ce site, pour le mode 7.2.1.2.2 Replication refreshAndPersist (provider Push)

    http://www.zytrax.com/books/ldap/ch7/

    Mais l’histoire du cookie je ne comprends pas trop :(

    Le serveur envoie un cookie avec un timestamp indiquant le dernier changement effectué, un truc du genre

    overlay syncprov

    # Le contextCSN (cookie) est écrit toutes les 100 opérations d’écriture ou toutes
    # les 10 minutes.
    syncprov-checkpoint 100 10
    # Les logs de session gardent en mémoire presque toutes les opérations
    # d’écriture sur la base, cela permet d’interroger les logs plutôt que de
    # faire des requêtes sur la base. Jusqu’à 100 opérations sont
    # enregistrées dans cette exemple.
    syncprov-sessionlog 100

    # Le contextCSN (cookie) est écrit toutes les 100 opérations d’écriture ou toutes les 10 minutes.

    Donc comment se fait la synchro si c’est tous les 10 minutes, ca se fait en temps réel, cette option ne sert a rien?

    Enfin si tu peux m’éclairer sur le fonctionnement :)

    Merci

  26. Adri says:

    En fait les cookies de réplication servent a vérifier si les serveurs sont bien synchronisés en comparant directement les timestamps (contenu dans ces cookies).

    Dans le mode refreshOnly, la synchronisation programmé selon un intervalle de temps – spécifié par le paramètre « interval ». Par défaut: 1 jour alors que dans le mode refreshAndPersist, la synchronisation est persistante… presque temps-réel.

  27. bobo says:

    ok merci de ta réponse

    donc syncprov-checkpoint 100 10 ==> sur le maitre est complètement inutile?

  28. Adri says:

    au contraire, il est indispensable. Tiens, je te conseille de lire cet article qui est vraiment très bien foutu: http://www.zytrax.com/books/ldap/ch7/

Laisser un commentaire

IMGP2023IMGP1900IMGP1873IMGP2032IMGP1849IMGP1817IMGP1570IMGP1572IMGP1469IMGP1342IMGP1272IMGP1226