如何克隆 OpenLDAP 数据库

发布于 2024-07-18 05:41:52 字数 203 浏览 9 评论 0原文

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

我应该将应用程序从一台红帽服务器移动到另一台服务器,并且对内部没有很好的了解应用程序的工作原理,我如何将 OpenLDAP 数据库从一台机器移动到另一台机器,包括模式和所有内容。

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

I know this is more like a serverfault question than a stackoverflow question, but since serverfault isn't up yet, here I go:

I'm supposed to move an application from one redhat server to another, and without very good knowledge of the internal workings of the application, how would I move the OpenLDAP database from the one machine to the other, with schemas and all.

What files would I need to copy over? I believe the setup is pretty standard.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

草莓味的萝莉 2024-07-25 05:41:52

SourceRebels 的答案的问题是slapcat(8) 不保证 ldapadd(1)/ldapmodify(1) 的数据是有序的。

来自 man slapcat (来自 OpenLDAP 2.3):(

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.

仅供参考:在 OpenLDAP 2.4 中,部分被改写并扩展。)

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

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

例如,从 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(添加)标志。

The problem with SourceRebels' answer is that slapcat(8) does not guarantee that the data is ordered for ldapadd(1)/ldapmodify(1).

From man slapcat (from OpenLDAP 2.3) :

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.

(FYI: In OpenLDAP 2.4 that section was rephrased and expanded.)

Plus using a tool that uses the backend files to dump the database and then using a tool that loads the ldif through the ldap protocol is not very consistent.

I'd suggest to use a combination of slapcat(8)/slapadd(8) OR ldapsearch(1)/ldapmodify(1). My preference would go to the latter as it does not need shell access to the ldap server or moving files around.

For example, dump database from a master server under dc=master,dc=com and load it in a backup server

$ 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

The -W flag above prompts for ldap admin_master password however since we are redirecting output to a file you wont see the prompt - just an empty line. Go ahead and type your ldap admin_master password and enter and it will work. First line of your output file will need to be removed (Enter LDAP Password:) before running ldapadd.

Last hint, ldapadd(1) is a hard link to ldapmodify(1) with the -a (add) flag turned on.

戏蝶舞 2024-07-25 05:41:52

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

使用 slapcat 导出数据库:

slapcat > ldif

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

slapadd -l ldif

ldapsearch and ldapadd are not necessarily the best tools to clone your LDAP DB. slapcat and slapadd are much better options.

Export your DB with slapcat:

slapcat > ldif

Import the DB with slapadd (make sure the LDAP server is stopped):

slapadd -l ldif
淡淡離愁欲言轉身 2024-07-25 05:41:52

一些约会:

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

    include /etc/ldap/schema/core.schema

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

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

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

Some appointments:

  • Save your personalized schemas and objectclasses definitions on your new server. You can look for your included files at slapd.conf to obtain it, for example (this is a part of my slapd.conf):

    include /etc/ldap/schema/core.schema

  • Include your personalized schemas and objectclasses in your new openLDAP installation.

  • Use slapcat command to export your full LDAP tree to a single/various ldif files.

  • Use ldapadd to import the ldif files on to your new LDAP installation.

九厘米的零° 2024-07-25 05:41:52

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

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

  • 使用 ldapsearch 转储数据库:

    ldapsearch -LLL -Wx -D "cn=admin,dc=domain" -b "dc=domain" >   域.ldif 
      
  • 并将其导入新服务器:

    ldapmodify -Wx -D "cn=admin,dc=domain" -a -f 域.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* 命令,您可以处理后端文件

I prefer copy the database through the protocol:

first of all be sure you have the same schemas on both servers.

  • dump the database with ldapsearch:

    ldapsearch -LLL -Wx -D "cn=admin,dc=domain" -b "dc=domain" > domain.ldif
    
  • and import it in the new server:

    ldapmodify -Wx -D "cn=admin,dc=domain" -a -f domain.ldif
    

in one line:

ldapsearch -LLL -Wx -D "cn=admin,dc=domain" -b "dc=domain" | ldapmodify -w pass -x -D "cn=admin,dc=domain" -a

By using the bin/ldap* commands you are talking directly with the server while using bin/slap* commands you are dealing with the backend files

情域 2024-07-25 05:41:52

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

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

(Not enough reputation to write a comment...)

Ldapsearch opens a connection to the LDAP server.
Slapcat instead accesses the database directly, and this means that ACLs, time and size limits, and other byproducts of the LDAP connection are not evaluated, and hence will not alter the data. (Matt Butcher, "Mastering OpenLDAP")

深海里的那抹蓝 2024-07-25 05:41:52

谢谢,维什。 效果非常好! 我编辑了命令:

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

Thanks, Vish. Worked like a charm! I edited the command:

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

Just added the -z max to avoid the size limitation and the -c to go on even if the target domain already exists (my case).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文