J'ai installé la mise à jour de sécurité 2019-003 ce matin. La mise à jour a échoué et a provoqué une panique induite sur l'hôte (postgres), une deuxième tentative a réussi. Après la mise à jour, slapd ne se lance plus.
J'ai essayé de restaurer /private/var/db/{krb5kdc,openldap,auth} à partir d'une sauvegarde Time Machine (en redémarrant avec Cmd-R, en désactivant temporairement SIP) mais quoi que je fasse, je n'arrive pas à le relancer. db_recover ne fonctionne pas non plus. Les tests de slapd produisent :
bash-3.2# /usr/libexec/slapd -T test
5cdfeed8 bdb_monitor_db_open: surveillance désactivée; configurez la base de données de surveillance pour l'activer
5cdfeed8 bdb_db_open: base de données "cn=authdata" : arrêt incorrect détecté ; tentative de récupération.
5cdfeed8 bdb_db_open: base de données "cn=authdata" : récupération ignorée en mode lecture-seule. Exécutez une récupération manuelle si des erreurs sont rencontrées.
test du fichier de configuration réussi
bash-3.2# slaptest -v
5cdfef28 bdb_monitor_db_open: surveillance désactivée; configurez la base de données de surveillance pour l'activer
5cdfef28 bdb_db_open: base de données "cn=authdata" : arrêt incorrect détecté ; tentative de récupération.
5cdfef28 bdb_db_open: base de données "cn=authdata" : récupération ignorée en mode lecture-seule. Exécutez une récupération manuelle si des erreurs sont rencontrées.
test du fichier de configuration réussi
Comment puis-je récupérer cela à partir de ma sauvegarde Time Machine sans restaurer complètement le serveur et écraser tout le reste ?
Apparemment, la restauration que j'ai essayée (copier openldap à partir d'une sauvegarde Time Machine) n'a pas fonctionné, car la récupération de la base de données de Postgres bloque à cause de ce qui se trouve dans authdata :
bash-3.2# db_recover -cv -h authdata/
Recherche du dernier LSN de journal valide : fichier : 31 offset 174121
Récupération commençant à partir de [30][28]
db_recover: Erreur de séquence de journal : LSN de page 23 1709981; LSN précédent 30 28
db_recover: La fonction de récupération pour LSN 30 8130 a échoué dans le passage en avant
db_recover: PANIQUE : Argument invalide
db_recover: process-private: impossible de trouver l'environnement
db_recover: DB_ENV->open: DB_RUNRECOVERY : Erreur fatale, exécutez la récupération de la base de données
bash-3.2# db_recover -cv -h openldap-data/
Recherche du dernier LSN de journal valide : fichier : 1 offset 1754044
Récupération commençant à partir de [1][28]
Récupération terminée le Sam 18 Mai 13:45:46 2019
Identifiant de transaction maximum 80000cad Point de contrôle de récupération [1][1754044]