2009-04-27 62 views
34

我知道這更像是比計算器問題上serverfault問題,但由於serverfault是沒有起來,我來到這裏:我如何克隆OpenLDAP的數據庫

我應該從移動應用一臺Redhat服務器到另一臺服務器,並且對應用程序的內部工作沒有很好的瞭解,我將如何將OpenLDAP數據庫從一臺機器移到另一臺機器上,使用模式和全部。

我需要複製哪些文件?我相信這個設置非常標準。

回答

38

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)ldapsearch(1)/ldapmodify(1)的組合。我偏好後者,因爲它不需要shell訪問ldap服務器或移動文件。

例如,數據庫轉儲從主服務器下DC =主人,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(add)標誌。

+2

-Wx在重定向到文件時不適用於我。用-w 取代-Wx效果很好。 – 2012-01-23 00:13:00

+4

我不喜歡在命令行上放置密碼,因爲它們通常會在您的外殼歷史記錄中結束... – sberder 2012-02-07 06:20:58

8

一些約會:

  • 保存您的個性化模式和對象類的新服務器上定義。你可以看看你的包含文件在slapd.conf中獲得它,例如(這是我的slapd.conf的一部分):

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

  • 包括您的新的openLDAP安裝中的個性化模式和對象類。

  • 使用slapcat命令將您的完整LDAP樹導出到單個/各種ldif文件。

  • 使用ldapadd將ldif文件導入到您的新LDAP安裝中。

+0

謝謝......問題是,我不記得工具的名稱(slapcat) – elzapp 2009-04-27 10:35:03

+1

對於較新版本的OpenLDAP,您需要使用'slapadd' 'ldapadd'。 – 2011-11-02 23:07:25

5

我更喜歡通過協議複製數據庫:

首先是要確保你有兩臺服務器上相同的模式。

-dump與ldapsearch的數據庫:
ldapsearch的-LLL -wx -D 「CN =管理員,DC =域」 -b 「DC =域」> domain.ldif

-and導入它在新服務器:
的ldapmodify -WX -D 「CN =管理員,DC =域」 -a -f domain.ldif

在ONELINE


ldapsearch的-LLL -WX -D「CN =管理員,DC =域「-b」dc = domain「| ldapmodify -w pass -x -D「cn = admin,dc = domain」-a

通過使用bin/ldap *命令,您可以在使用bin/slap *命令時直接與服務器通信後端文件

+3

我對如何「確保在兩臺服務器上具有相同的架構」感興趣。我的任務是將現有的LDAP移至新的服務器,並且從未使用過openLdap。我怎樣才能讓架構鏡像舊服務器,以便導入成功? – Ketema 2012-12-31 22:01:53

15

ldapsearch和ldapadd不一定是克隆LDAP數據庫的最佳工具。 slapcat和slapadd是更好的選擇。

導出與用於slapcat DB:

slapcat > ldif 

導入DB與slapadd(確保LDAP服務器已停止):

slapadd -l ldif 
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去,即使目標域已經存在(我的情況)。

3

(沒有足夠的信譽來寫評論...)

的ldapsearch打開到LDAP服務器的連接。 Slapcat直接訪問數據庫,這意味着ACL連接,時間和大小限制以及LDAP連接的其他副產品不會被評估,因此不會更改數據。 (馬特布徹,「掌握OpenLDAP」)