Come riparare fallendo Open Directory (il database "cn = authdata" non può essere aperto, err 12) dopo il blocco

5

Un server Mac OS X Lion 10.7.5 con Open Directory bloccato. SSH era ancora possibile ma il comando sudo reboot non riavviava il server entro 15 minuti. Ecco perché è stato emesso un ciclo di alimentazione. Dopo il ciclo di accensione, Open Directory non si avvia più e il registro di sistema viene riempito con un nuovo messaggio ogni 10 secondi:

com.apple.launchd[1] (org.openldap.slapd[1153]): Exited with code: 1
com.apple.launchd[1] (org.openldap.slapd): Throttling respawn: Will start in 10 seconds

Riparazione dell'autorizzazione del disco, nessun altro riavvio non risolve il problema.

Slapd nelle uscite della modalità strumento:

$ sudo /usr/libexec/slapd -Tt
bdb(dc=nl2,dc=probackup,dc=nl): unable to allocate memory for mutex; resize mutex region
bdb_db_open: database "dc=nl2,dc=probackup,dc=nl" cannot be opened, err 12. Restore from backup!
backend_startup_one (type=bdb, suffix="dc=nl2,dc=probackup,dc=nl"): bi_db_open failed! (12)
slap_startup failed (test would succeed using the -u switch)

Come risolvere questo problema?

    
posta Pro Backup 17.01.2013 - 15:02
fonte

4 risposte

11

Controlla se il database OD è il problema

$ sudo /usr/libexec/slapd -Tt

Non sono necessarie ulteriori azioni se l'output dice qualcosa come:

...
bdb_db_open: database "dc=hostname,dc=domainname,dc=tldname": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
...

Prova a riparare

Per riparare il database authdata di Open Directory:

$ sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist

Ora avvia il ripristino del database usando il comando seguente che corrisponde alla versione del tuo sistema operativo.

$ sudo db_recover -h /var/db/openldap/authdata/ # Mac OS X 10.7
$ sudo db_recover -h /var/db/openldap/openldap-data/ # Mac OS X 10.6

Ora slapd in output in modalità strumento:

$ sudo /usr/libexec/slapd -Tt
bdb_db_open: database "dc=nl2,dc=probackup,dc=nl": unclean shutdown detected; attempting recovery.
bdb_db_open: database "dc=nl2,dc=probackup,dc=nl": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
config file testing succeeded

Ora riaccendi Apri Directory:

$ sudo launchctl load /System/Library/LaunchDaemons/org.openldap.slapd.plist

E invia un altro riavvio per essere più sicuri che dispiaciuti:

$ sudo reboot

Open Directory dovrebbe ora essere attivo e funzionante di nuovo. Nel caso in cui non sia in esecuzione, prova di seguito.

Prova il ripristino di Time Machine

Per prima cosa dai un'occhiata alle versioni back-upped disponibili:

$ ls /Volumes/Time\ Machine/Backups.backupdb/*/

Scegli la versione più recente quando Open Directory è ancora in esecuzione correttamente, ad esempio 2018-07-22-091106 .

Inizia di nuovo con lo scarico del daemon.

$ sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist

Quindi rimuovi (o rinomina) la directory del database (quando è disponibile Time Machine non verrà ripristinata correttamente) e avvia il ripristino:

$ sudo rm -rf /var/db/openldap/ && sudo tmutil restore -v /Volumes/Time\ Machine/Backups.backupdb/*/2018-07-22-091106/Macintosh\ HD/var/db/openldap/ /var/db/

Forza la riparazione del database:

$ sudo db_recover -cv -h /var/db/openldap/openldap-data/

Risolvi i permessi e riavvia:

$ sudo diskutil repairPermissions / && sudo reboot
    
risposta data 17.01.2013 - 15:02
fonte
4

Questo è il modo in cui normalmente riparo un LDAP / OD rotto

1. controlla se questo è il problema

sudo /usr/libexec/slapd -Tt *

Potresti ottenere: bdb_db_open: database "cn = authdata": db_open (/var/db/openldap/authdata/id2entry.bdb) non riuscito: argomento non valido (22).

2. Interrompi LDAP su OD Master

sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist

3. Autorizzazioni di riparazione

diskutil repairPermissions /

4. backup openldap db

sudo cp /var/db/openldap/authdata/id2entry.bdb /var/db/openldap/authdata/id2entry.bdb.backup

5. repair

sudo db_recover -cv -h /var/db/openldap/openldap-data/

6. esegui nuovamente il ripristino per verificare

sudo db_recover -cv -h /var/db/openldap/openldap-data/

7. fallo ancora una volta, quindi le cose vengono riparate correttamente

sudo /usr/libexec/slapd -Tt

8. riavvia il servizio

sudo launchctl load /System/Library/LaunchDaemons/org.openldap.slapd.plist

9. Se quanto sopra non funziona, prova:

sudo db_recover -cv -h /var/db/openldap/authdata/

quindi riavvio il servizio con il passaggio 8.

sudo launchctl load /System/Library/LaunchDaemons/org.openldap.slapd.plist

Questo di solito risolve il problema ... ma in alcuni casi è necessario ripristinare come llange spiegazioni nel suo post.

    
risposta data 28.05.2015 - 23:34
fonte
1

La prima cosa migliore è controllare il disco che si può fare usando la partizione di ripristino o il singolo utente ( cmd - S all'avvio) quindi digitare:

fsck -fy

Tastiera QWERTY il trattino è 2 tasti a sinistra dal backspace.

Per reimportare un database danneggiato da un backup, è necessario eseguire il backup e sostituire i seguenti file / cartelle:

  • var / db / openldap /
  • usr / bin / db_recover

Non sono sicuro che sia necessario ma se hai rimosso la voce LDAPv3 nel portachiavi di sistema:

  • Libreria / Keychains / System.keychain

Prova un recupero ...

Quindi dovresti riparare i permessi del disco da un terminale (non da un singolo utente):

diskutil repairPermissions /

Se dopo il ripristino si verifica un problema durante la connessione ai servizi, verifica la configurazione nella scheda " Servizi " in Utility Directory.

    
risposta data 06.12.2013 - 11:29
fonte
0

Riparare come proposto nella risposta accettata non è stato in grado di risolvere i miei problemi. Tuttavia, il ripristino del database da un backup di Time Machine ha avuto esito positivo:

  1. Scarica OpenDirectory per sicurezza: sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist
  2. Apri una finestra del Finder, quindi seleziona Vai > Vai alla cartella /var/db
  3. Rinomina /var/db/openldap a qualcosa come /var/db/openldap.corrupt
  4. Inserisci la macchina del tempo
  5. Torna indietro nel tempo a quando sai che OpenDirectory ha funzionato
  6. Ripristina /var/db/openldap
  7. Per maggiore sicurezza, puoi eseguire un recupero sui dati ripristinati: sudo db_recover -cv -h /var/db/openldap/openldap-data/
  8. Reboot

Una volta riavviato il server macOS, OpenDirectory dovrebbe essere attivo e funzionante.

    
risposta data 27.01.2018 - 12:59
fonte

Leggi altre domande sui tag