web-dev-qa-db-ja.com

OpenLDAPデータベースのクローンを作成する方法

これはstackoverflowの質問よりもserverfaultの質問に似ていることを知っていますが、serverfaultはまだ上がっていないので、ここに行きます:

Redhatサーバー間でアプリケーションを移動することになっていますが、アプリケーションの内部動作について十分な知識がなくても、スキーマなどを使用してOpenLDAPデータベースをあるマシンから別のマシンに移動するにはどうすればよいでしょうか。

どのファイルをコピーする必要がありますか?セットアップはかなり標準的なものだと思います。

37
elzapp

SourceRebels answerの問題は、slapcat(8)が、ldapadd(1)/ldapmodify(1)のデータの順序付けを保証しないことです。 manページから:

[。 (1)最初に並べ替えられません。

さらに、バックエンドファイルを使用してデータベースをダンプするツールを使用し、次にldapプロトコルを介してldifをロードするツールを使用することはあまり一貫性がありません。

slapcat(8)/slapadd(8)[〜#〜] or [〜#〜]ldapsearch(1)/ldapmodify(1)の組み合わせを使用することをお勧めします。私の好みは、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)は、-a(追加)フラグがオンになっているldapmodify(1)へのハードリンクです。

43
sberder

ldapsearchとldapaddは、必ずしもLDAP DBを複製するのに最適なツールではありません。 slapcatとslapaddは、はるかに優れたオプションです。

Slapcatを使用してDBをエクスポートします。

slapcat > ldif

Slapaddを使用してDBをインポートします(LDAPサーバーが停止していることを確認してください)。

slapadd -l ldif
16
Joel

いくつかの予定:

  • パーソナライズされたスキーマとオブジェクトクラスの定義を新しいサーバーに保存します。たとえば、slapd.confでインクルードファイルを探して取得できます(これは私のslapd.confの一部です)。

    /etc/ldap/schema/core.schemaを含める

  • 新しいopenLDAPインストールにパーソナライズされたスキーマとオブジェクトクラスを含めます。

  • slapcat コマンドを使用して、完全なLDAPツリーを単一/さまざまな ldif ファイルにエクスポートします。

  • ldapadd を使用して、ldifファイルを新しいLDAPインストールにインポートします。

8
sourcerebels

私はプロトコルを介してデータベースをコピーすることを好みます:

まず、両方のサーバーに同じスキーマがあることを確認してください。

-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 *コマンドを使用することにより、バックエンドファイルを処理します。

6
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ターゲットドメインが既に存在する場合でも続行します(私の場合)。

2
Natan

(コメントを書くには評判が足りません...)

Ldapsearchは、LDAPサーバーへの接続を開きます。 Slapcatは代わりにデータベースに直接アクセスします。つまり、ACL、時間とサイズの制限、およびLDAP接続の他の副産物は評価されないため、データは変更されません。 (Matt Butcher、「OpenLDAPをマスターする」)

2
O.Colombo