我如何克隆一个OpenLDAP数据库

我知道这更像是一个serverfault问题比stackoverflow的问题,但由于serverfault还没有结束,在这里我去:

我应该把一个应用程序从一个redhat服务器移到另一个服务器,如果对应用程序的内部工作没有太多的了解,我将如何将OpenLDAP数据库从一台机器移到另一台机器上。

我需要复制哪些文件? 我相信这个设置非常标准。

SourceRebels答案的问题是, slapcat(8)不能保证数据是为ldapadd(1) / ldapmodify(1)排序的。 从手册页:

该工具生成的LDIF适用于slapadd(8)。
由于这些条目是按照数据库顺序,而不是优先的第一顺序,他们
不能先装入ldapadd(1)而不先重新排序。

另外使用使用后端文件转储数据库的工具,然后使用通过ldap协议加载ldif的工具不是很一致。

我建议使用slapcat(8) / slapadd(8) ldapsearch(1) / ldapmodify(1) 。 我喜欢后者,因为它不需要shell访问ldap服务器或移动文件。

例如,从dc = master,dc = com下的主服务器转储数据库并将其加载到备份服务器中

 $ 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

上面的-W标志提示输入ldap admin_master密码,但是由于我们将输出重定向到一个文件,所以你不会看到提示符 – 只是一个空行。 继续前进,输入你的ldap admin_master密码,它就会起作用。 在运行ldapadd之前,需要删除输出文件的第一行(输入LDAP密码:)。

最后提示, ldapadd(1)是一个到ldapmodify(1)的硬链接,打开了-a (add)标志。

ldapsearch和ldapadd不一定是克隆LDAP数据库的最佳工具。 slapcat和slapadd是更好的选择。

用slapcat导出你的数据库:

 slapcat > ldif 

使用slapadd导入数据库(确保LDAP服务器已停止):

 slapadd -l ldif 

一些约会:

  • 将您的个性化模式和对象类定义保存到新服务器上。 例如,您可以在slapd.conf中查找包含的文件(这是我的slapd.conf的一部分):

    包括/etc/ldap/schema/core.schema

  • 在您的新的openLDAP安装中包含您的个性化模式和对象类。

  • 使用slapcat命令将完整的LDAP树导出到单个/各种ldif文件。

  • 使用ldapadd将ldif文件导入到新的LDAP安装中。

  • 运气好:-)

我更喜欢通过协议复制数据库:

首先确保你在两台服务器上都有相同的模式。

使用ldapsearch转储数据库:
ldapsearch -LLL -Wx -D“cn = admin,dc = domain”-b“dc = domain”> domain.ldif

– 并将其导入到新服务器中:
ldapmodify -Wx -D“cn = admin,dc = domain”-a -f domain.ldif

在线上:
ldapsearch -LLL -Wx -D“cn = admin,dc = domain”-b“dc = domain”| ldapmodify -w pass -x -D“cn = admin,dc = domain”-a

通过使用bin / ldap *命令,您正在使用bin / slap *命令直接与服务器交谈,您正在处理后端文件

(没有足够的声望写评论…)

Ldapsearch打开到LDAP服务器的连接。 Slapcat直接访问数据库,这意味着ACL连接,时间和大小限制以及LDAP连接的其他副产品不被评估,因此不会改变数据。 (Matt Butcher,“掌握OpenLDAP”)

谢谢,Vish。 像魅力一样工作! 我编辑了这个命令:

 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 

只是添加了-z max以避免大小限制,即使目标域已经存在(我的情况),也继续使用-c