2009-04-27 25 views
34

Sé que esto es más como una pregunta que una pregunta serverfault stackoverflow, pero desde serverfault no está, sin embargo, aquí voy:Cómo hacer yo clonar una base de datos de OpenLDAP

supone que tengo que mover una aplicación de un servidor de redhat a otro, y sin un buen conocimiento del funcionamiento interno de la aplicación, ¿cómo movería la base de datos OpenLDAP de una máquina a la otra, con esquemas y todo?

¿Qué archivos necesitaría copiar? Creo que la configuración es bastante estándar.

Respuesta

38

el problema con SourceRebels respuesta es que slapcat(8) no garantiza que los datos se ordenó para ldapadd(1)/ldapmodify(1). Desde la página del manual:

 
The LDIF generated by this tool is suitable for use with slapadd(8). 
As the entries are in database order, not superior first order, they 
cannot be loaded with ldapadd(1) without first being reordered. 

Plus utilizando una herramienta que utiliza los archivos de back-end para volcar la base de datos y el uso de una herramienta que carga el ldif a través del protocolo LDAP no es muy consistente.

me gustaría sugerir a utilizar una combinación de slapcat(8)/slapadd(8)Oldapsearch(1)/ldapmodify(1). Mi preferencia iría a la última ya que no necesita acceso de shell al servidor ldap ni mover archivos.

Por ejemplo, la base de datos de volcado desde un servidor maestro bajo dc = maestro, dc = com y cargarlo en un servidor de copia de seguridad

 
$ ldapsearch -Wx -D "cn=admin_master,dc=master,dc=com" -b "dc=master,dc=com" -H ldap://my.master.host -LLL > ldap_dump-20100525-1.ldif 
$ ldapadd -Wx -D "cn=admin_backup,dc=backup,dc=com" -H ldap://my.backup.host -f ldap_dump-20100525-1.ldif 

La bandera -W anterior solicita la contraseña LDAP admin_master sin embargo, ya que vamos a redirigir salida a un archivo no verá el mensaje - solo una línea vacía. Siga adelante y escriba su contraseña ldap admin_master y funcionará. La primera línea de su archivo de salida deberá eliminarse (Introduzca la contraseña de LDAP :) antes de ejecutar ldapadd.

Última pista, ldapadd(1) es un enlace duro a ldapmodify(1) con la bandera -a (añadir) activado.

+2

-Wx no funcionó para mí al redireccionar a un archivo. Reemplazar -Wx con -w funcionó muy bien. –

+4

No me gusta poner contraseñas en la línea de comandos porque generalmente terminan en tu historial de shell ... – sberder

+1

De acuerdo, pero eso fue lo único que funcionó para mí. –

8

Algunas citas:

  • Guardar los esquemas personalizados y objectClasses definiciones sobre su nuevo servidor. Puede buscar sus archivos incluidos en slapd.conf para lograrlo, por ejemplo (esto es una parte de mi slapd.conf):

    incluyen /etc/ldap/schema/core.schema

  • Incluir sus esquemas personalizados y clases de objetos en su nueva instalación de openLDAP.

  • Utilice el comando slapcat para exportar su árbol LDAP completo a un solo/varios archivos ldif.

  • Utilice ldapadd para importar los archivos ldif a su nueva instalación de LDAP.

+0

Gracias ... el problema fue que no recordaba el nombre de la herramienta (slapcat) – elzapp

+1

Para las versiones más nuevas de OpenLDAP, necesitarás usar 'slapadd' en su lugar de 'ldapadd'. –

5

prefiero copiar la base de datos a través del protocolo:

en primer lugar asegurarse de que tiene los mismos esquemas en ambos servidores.

-dump la base de datos con ldapsearch:
ldapsearch -LLL WX -D "cn = admin, dc = dominio" -b "dc = dominio"> domain.ldif

-y importar que en el nuevo servidor:
ldapmodify WX -D "cn = admin, dc = dominio" -a -f domain.ldif

en oneline:
ldapsearch -LLL WX -D "cn = admin, dc = dominio "-b" dc = dominio "| ldapmodify -w pass -x -D "cn = admin, dc = domain" -a

Al usar los comandos bin/ldap * está hablando directamente con el servidor mientras usa los comandos bin/slap * que está tratando con el archivos backend

+3

Me interesa saber "asegurarse de tener los mismos esquemas en ambos servidores". Tengo la tarea de mover un LDAP existente a un nuevo servidor y nunca antes había usado openLdap. ¿Cómo puedo obtener el esquema para duplicar el servidor anterior para que la importación tenga éxito? – Ketema

15

ldapsearch y ldapadd no son necesariamente las mejores herramientas para clonar su base de datos LDAP. slapcat y slapadd son opciones mucho mejores.

Exportación su base de datos con slapcat:

slapcat > ldif 

Importe la base de datos con slapadd (asegúrese de que el servidor LDAP se detiene):

slapadd -l ldif 
+1

En la página man de slapcat, "La salida de slapcat está destinada a utilizarse como entrada para slapadd (8). La salida de slapcat generalmente no se puede usar como entrada para ldapadd (1) u otros clientes LDAP sin editar primero la salida. Esta edición normalmente incluiría reordenar los registros en primer orden superior y eliminar los atributos operacionales de modificación sin usuario ". - En otras palabras, es potencialmente mucho trabajo usar ldapadd debido a los metadatos operacionales, mientras que slapadd ignorará los metadatos operacionales. – wmorse

+0

@wmorse slapadd no ignorará los metadatos operacionales, sino que los cargará como está contenido en el ldif producido por slapcat. Esto es importante si tiene procesos como la replicación, etc. que se basan en atributos operativos como entryUUID para permanecer igual. – Ralf

2

Gracias, Vish. ¡Trabajado como un encanto! He editado el comando:

ldapsearch -z max -LLL -Wx -D "cn=Manager,dc=domain,dc=fr" -b "dc=domain,dc=fr" >/tmp/save.ldif 

ldapmodify -c -Wx -D "cn=Manager,dc=domain,dc=fr" -a -f /tmp/save.ldif 

acaban de agregar la -z max para evitar la limitación de tamaño y la -c seguir incluso si el dominio de destino ya existe (mi caso).

3

(reputación no lo suficiente como para escribir un comentario ...)

Ldapsearch abre una conexión con el servidor LDAP. Slapcat accede a la base de datos directamente, lo que significa que las ACL, los límites de tiempo y tamaño y otros subproductos de la conexión LDAP no se evalúan y, por lo tanto, no alterarán los datos. (Matt Butcher, "Mastering OpenLDAP")

+0

Intente dar una respuesta más detallada. De lo contrario, tu respuesta podría ser más adecuada para ser un comentario. –

+0

Bueno, hay una razón para ese requisito y responder en lugar de comentar solo porque uno no tiene el privilegio todavía está mal visto. –

Cuestiones relacionadas