如何克隆OpenLDAP数据库

elz*_*app 37 linux redhat ldap openldap

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

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

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

sbe*_*der 43

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(添加)标志开启.

  • 我不喜欢在命令行上输入密码,因为它们通常会在你的shell历史记录中结束... (5认同)
  • 重定向到文件时-Wx对我不起作用.用-w <mypasswd>替换-Wx工作得很好. (2认同)

Joe*_*oel 16

ldapsearch和ldapadd不一定是克隆LDAP DB的最佳工具.slapcat和slapadd是更好的选择.

用slapcat导出你的数据库:

slapcat > ldif
Run Code Online (Sandbox Code Playgroud)

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

slapadd -l ldif
Run Code Online (Sandbox Code Playgroud)


sou*_*els 8

一些约会:

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

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

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

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

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

  • 对于较新版本的 OpenLDAP,您需要使用“slapadd”而不是“ldapadd”。 (2认同)

小智 6

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

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


-dmp 数据库使用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*命令直接与服务器通信,而您正在处理后端文件

  • 我对如何"确保在两台服务器上都有相同的模式"感兴趣.我的任务是将现有LDAP移动到新服务器,之前从未使用过openLdap.如何让架构镜像旧服务器以便导入成功? (3认同)