Cómo reparar el Open Directory que falla (la base de datos "cn = authdata" no se puede abrir, error 12) después de colgar

5

Un servidor Mac OS X Lion 10.7.5 que ejecuta Open Directory está bloqueado. SSH aún era posible, pero el comando sudo reboot no reinició el servidor en 15 minutos. Es por eso que se emitió un ciclo de poder. Después del ciclo de alimentación, Open Directory ya no se iniciará y el registro del sistema se llenará con un mensaje nuevo cada 10 segundos:

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

Reparando el permiso del disco, ni otro reinicio no resuelve el problema.

Slapd en el modo de herramientas de salida:

$ 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)

¿Cómo arreglar esto?

    
pregunta Pro Backup 17.01.2013 - 15:02

4 respuestas

11

Compruebe si la base de datos OD es el problema

$ sudo /usr/libexec/slapd -Tt

No se necesita ninguna acción adicional si la salida dice algo como:

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

Probar reparación

Para reparar la base de datos de datos de directorio abierto:

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

Ahora inicie la recuperación de la base de datos con el siguiente comando que coincide con la versión de su 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

Ahora slapd en el modo de herramientas de salida:

$ 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

Ahora vuelve a abrir el directorio:

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

Y emita otro reinicio para estar mejor seguro que lo siento:

$ sudo reboot

Open Directory ahora debería estar funcionando nuevamente. En caso de que no se esté ejecutando, intente a continuación.

Probar la restauración de Time Machine

Primero eche un vistazo a las versiones disponibles con copia de seguridad:

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

Elija la versión más reciente cuando Open Directory aún se está ejecutando correctamente, por ejemplo, 2018-07-22-091106 .

Comienza de nuevo con la descarga del daemon.

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

Luego elimine (o cambie el nombre) del directorio de la base de datos (cuando esté disponible, Time Machine no se restaurará correctamente) e inicie la restauración:

$ 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/

Forzar la reparación de la base de datos:

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

Repare permisos y reinicie:

$ sudo diskutil repairPermissions / && sudo reboot
    
respondido por el Pro Backup 17.01.2013 - 15:02
4

Así es como normalmente reparo un LDAP / OD roto

1. comprueba si este es el problema

sudo /usr/libexec/slapd -Tt *

Usted podría obtener: bdb_db_open: base de datos "cn = authdata": db_open (/var/db/openldap/authdata/id2entry.bdb) falló: argumento no válido (22).

2. Detener LDAP en OD Master

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

3. Reparar permisos

diskutil repairPermissions /

4. copia de seguridad de la base de datos db

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

5. reparar

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

6. ejecuta la reparación nuevamente para verificar

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

7. hazlo una vez más para que las cosas se reparen correctamente

sudo /usr/libexec/slapd -Tt

8. reinicia el servicio

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

9. Si lo anterior no funciona, intente:

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

luego reinicio el servicio con el paso 8.

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

Esto generalmente soluciona el problema ... pero en algunos casos necesitas restaurar como explica Llange en su publicación.

    
respondido por el rbn 28.05.2015 - 23:34
1

Lo mejor es verificar el disco que puede hacer, ya sea usando la partición de recuperación o un solo usuario ( cmd - S al inicio) luego escriba:

fsck -fy

Teclado QWERTY el guión está a 2 teclas a la izquierda de la tecla de retroceso.

Para volver a importar una base de datos dañada desde una copia de seguridad, debe hacer una copia de seguridad y reemplazar los siguientes archivos / carpetas:

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

No estoy seguro de que sea necesario, pero si ha eliminado la entrada LDAPv3 en el llavero del sistema:

  • Library/Keychains/System.keychain

El intento de recuperación ...

Luego debe reparar los permisos de disco de un terminal (no de un solo usuario):

diskutil repairPermissions /

Si después de la recuperación tiene problemas para conectarse a los servicios, verifique la configuración en la pestaña " Servicios " en la Utilidad de Directorio.

    
respondido por el llange 06.12.2013 - 11:29
0

La reparación según lo propuesto en la respuesta aceptada no pudo solucionar mis problemas. Sin embargo, la restauración de la base de datos desde una copia de seguridad de Time Machine fue exitosa:

  1. Descargue OpenDirectory para estar seguro: sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist
  2. Abra una ventana del buscador, luego seleccione Ir > Ir a la carpeta /var/db
  3. Renombrar /var/db/openldap a algo como /var/db/openldap.corrupt
  4. Entrar en la máquina del tiempo
  5. Retroceda en el tiempo cuando sepa que OpenDirectory funcionó
  6. Restaurar /var/db/openldap
  7. Para mayor seguridad, puede ejecutar una recuperación en los datos restaurados: sudo db_recover -cv -h /var/db/openldap/openldap-data/
  8. reiniciar

Una vez que el servidor macOS se haya reiniciado, OpenDirectory debería estar en funcionamiento.

    
respondido por el not2savvy 27.01.2018 - 12:59

Lea otras preguntas en las etiquetas