41

我知道这更像是一个 serverfault 问题而不是一个 stackoverflow 问题,但是由于 serverfault 还没有启动,所以我开始了:

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

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

4

6 回答 6

47

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

此工具生成的 LDIF 适合与 slapadd(8) 一起使用。
由于条目是按数据库顺序排列的,而不是优先顺序,它们
如果不先重新排序,则无法使用 ldapadd(1) 加载。

加上使用一个工具,使用后端文件转储数据库,然后使用一个通过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

于 2010-05-25T05:08:34.453 回答
20

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

使用 slapcat 导出数据库:

slapcat > ldif

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

slapadd -l ldif
于 2010-07-23T01:41:53.173 回答
9

一些约会:

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

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

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

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

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

于 2009-04-27T09:36:43.177 回答
8

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

首先确保您在两台服务器上具有相同的架构。

- 使用 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* 命令,您正在处理后端文件

于 2009-05-19T13:12:27.043 回答
3

(没有足够的声誉来写评论......)

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

于 2014-04-30T13:23:52.873 回答
2

谢谢,维什。像魅力一样工作!我编辑了命令:

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

于 2013-06-09T15:33:46.740 回答