我知道这更像是一个服务器故障问题,而不是stackoverflow问题,但是由于serverfault尚未启动,我在这里:
我应该将应用程序从一个redhat服务器移动到另一个,并且在不了解应用程序的内部工作原理的情况下,如何将OpenLDAP数据库从一台机器移动到另一台机器,使用模式和所有机器
我需要复制哪些文件?我相信设置很标准。
答案 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)
一些约会:
答案 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")