如何克隆OpenLDAP数据库

时间:2009-04-27 07:51:56

标签: linux ldap redhat openldap

我知道这更像是一个服务器故障问题,而不是stackoverflow问题,但是由于serverfault尚未启动,我在这里:

我应该将应用程序从一个redhat服务器移动到另一个,并且在不了解应用程序的内部工作原理的情况下,如何将OpenLDAP数据库从一台机器移动到另一台机器,使用模式和所有机器

我需要复制哪些文件?我相信设置很标准。

6 个答案:

答案 0 :(得分:41)

SourceRebels回答的问题是slapcat(8)无法保证为ldapadd(1) / ldapmodify(1)订购数据。从手册页:

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.

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

我建议使用slapcat(8) / slapadd(8) OR 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(添加)标记已开启。

答案 1 :(得分:15)

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

使用slapcat导出数据库:

slapcat > ldif

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

slapadd -l ldif

答案 2 :(得分:8)

一些约会:

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

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

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

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

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

答案 3 :(得分:6)

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

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

-dump数据库使用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

ineline:
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 *命令处理后端文件

答案 4 :(得分:2)

谢谢,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即使目标域已存在(我的情况)也会继续。

答案 5 :(得分:2)

(写评论的声誉不够......)

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