検索

第6章 Directory Database への入力

download PDF
データベースには、Red Hat Directory Server が管理するディレクトリーデータが含まれます。

6.1. データのインポート

Directory Server には、以下を行ってデータベースにデータを入力できます。
  • データのインポート
    重要
    データをインポートするには、インポートする LDIF ファイルを /var/lib/dirsrv/slapd-instance_name/ldif/ ディレクトリーに保存する必要があります。Directory Server はデフォルトで PrivateTmp systemd ディレクティブを使用します。そのため、LDIF ファイルを /tmp/ または /var/tmp/ システムディレクトリーにエクスポートすると、Directory Server はインポート中にこれらの LDIF ファイルを認識しません。PrivateTmp の詳細は、systemd.exec(5) の man ページを参照してください。
  • レプリケーションのデータベースの初期化
次の表に、データベースのインポートと初期化の違いを示します。
表6.1 インポート方法の比較
動作 インポート データベースの初期化
データベースの上書き いいえ はい
LDAP 操作 追加、変更、削除 追加のみ
パフォーマンス より時間がかかる 速い
パーティション特長 すべてのパーティションで機能 ローカルパーティションのみ
サーバー障害への応答 ベストエフォート (障害が発生した時点までに行われたすべての変更が残る) アトミック (障害発生後にすべての変更が失われる)
LDIF ファイルの場所 Web コンソールへのローカル Web コンソールまたはローカルサーバーへのローカル
設定情報 (cn=config) をインポートする はい いいえ

6.1.1. インポート中の EntryUSN 初期値の設定

エントリーがサーバーからエクスポートされ、別のサーバーにインポートされた場合には、エントリーの更新シーケンス番号 (USN) が保持されません。「更新シーケンス番号でデータベースへの変更の追跡」で説明されているように、エントリー USN はローカルサーバーで発生する操作に割り当てられるため、これらの USN を別のサーバーにインポートすることは意味がありません。
ただし、データベースのインポート時やデータベースの初期化時にエントリーに USN 値を設定することが可能です (レプリカがレプリケーションに対して初期化される場合など)。これは、nsslapd-entryusn-import-initval パラメーターを設定します。これにより、インポートされたすべてのエントリーの USN が開始されます。
nsslapd-entryusn-import-initval には 2 つの値を指定することができます。
  • 整数。インポートされたすべてのエントリーに使用される明示的な開始番号です。
  • next。つまり、インポートされたエントリーはすべて、インポート操作の前にサーバー上にあった最大のエントリー USN 値を、1 つずつインクリメントして使用します。
nsslapd-entryusn-import-initval が設定されていない場合、すべてのエントリー USN はゼロで始まります。

例6.1 nsslapd-entryusn-import-initval パラメーターの仕組み

たとえば、インポートまたは初期化操作の前にサーバーの最大値が 1000 で、nsslapd-entryusn-import-initval の値が next の場合、インポートされたすべてのエントリーには 1001 の USN が割り当てられます。
# ldapsearch -D "cn=Directory Manager" -W -p 389 -h server.example.com -x "(cn=*)" entryusn

dn: dc=example,dc=com
entryusn: 1001
dn: ou=Accounting,dc=example,dc=com
entryusn: 1001
dn: ou=Product Development,dc=example,dc=com
entryusn: 1001
...
dn: uid=user_name,ou=people,dc=example,dc=com
entryusn: 1001
...
エントリー USN の初期値を設定するには、nsslapd-entryusn-import-initval パラメーターを、データをインポートするサーバーまたは初期化を実行するサプライヤーサーバーに追加します。以下に例を示します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-entryusn-import-initval=next
注記
マルチサプライヤーレプリケーションでは、nsslapd-entryusn-import-initval パラメーターはサーバー間で複製 されません。つまり、値は、レプリカの初期化に使用しているすべてのサプライヤーサーバーに対して設定する必要があります。
たとえば、Supplier1 ホストの nsslapd-entryusn-import-initvalnext に設定され、レプリカの初期化に使用される場合は、インポートされたエントリーのエントリー USN は最も高い値に 1 が追加されます。Supplier2 ホストに nsslapd-entryusn-import-initval が設定されておらず、レプリカの初期化に使用される場合は、Supplier1 および Supplier2 にマルチサプライヤーレプリカ合意がある場合でも、インポートされたエントリーのすべてのエントリー USN はゼロで始まります。

6.1.2. コマンドラインでのインポート

Directory Server は、インスタンスの実行中またはオフライン時にデータのインポートをサポートします。
警告
インポート操作を開始すると、Directory Server はまずデータベースから既存のデータをすべて削除し、その後 LDIF ファイルからデータをインポートします。LDIF ファイルが存在しない場合など、インポートに失敗すると、サーバーは以前のデータをデータベースから削除しています。
インポート操作に使用される LDIF ファイルは、UTF-8 文字セットエンコーディングを使用する必要があります。インポート操作は、データをローカル文字セットエンコーディングから UTF-8 に変換しません。また、インポートされたすべての LDIF ファイルにルート接尾辞エントリーが含まれている必要があります。
Directory Server は、dirsrv ユーザーとしてインポート操作を実行します。したがって、LDIF ファイルのパーミッションにより、このユーザーがファイルの読み取りを許可する必要があります。

6.1.2.1. サーバーの実行中にデータのインポート

本セクションでは、Directory Server の実行中にデータをインポートする方法を説明します。
6.1.2.1.1. dsconf backend import コマンドを使用したインポート
dsconf backend import コマンドを使用して、LDIF ファイルからデータをインポートするタスクを自動的に作成します。たとえば、/var/lib/dirsrv/slapd-instance_name/ldif/instance_name-database_name-time_stamp.ldif ファイルを userRoot データベースにインポートするには、以下のコマンドを実行します。
  1. 接尾辞が存在しない場合は作成します。詳細については、「接尾辞の作成」 を参照してください。
  2. インポートする LDIF に接尾辞エントリーを追加するステートメントが含まれていない場合は、「ルートエントリーの作成」 で説明されているように、このエントリーを手動で作成します。
  3. LDIF ファイルをインポートします。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend import userRoot /var/lib/dirsrv/slapd-instance_name/ldif/instance_name-database_name-time_stamp.ldif
    The import task has finished successfully
    dsconf backend import コマンドは、特定の接尾辞を除外するなど、追加オプションに対応します。利用可能なオプションをすべて表示するには、以下を入力します。
    # dsconf ldap://server.example.com backend import --help
6.1.2.1.2. cn=tasks エントリーを使用したデータのインポート
Directory Server 設定の cn=tasks,cn=config エントリーは、サーバーがタスクの管理に使用する一時的なエントリー用のコンテナーエントリーです。インポート操作を開始するには、cn=import,cn=tasks,cn=config エントリーにタスクを作成します。
インポートタスクエントリーには以下の属性が必要です。
  • cn: タスクの一意の名前を設定します。
  • nsFilename: インポートする LDIF ファイルの名前を設定します。
  • nsInstance: ファイルをインポートするデータベースの名前を設定します。
インポートタスクは、接尾辞を除外するための追加パラメーターをサポートします。完全な一覧は、Red Hat Directory Server の設定、コマンド、およびファイルリファレンスcn=import セクションを参照してください。
たとえば、/var/lib/dirsrv/slapd-instance_name/ldif/example.ldif ファイルの内容を userRoot データベースにインポートするタスクを追加するには:
  1. 接尾辞が存在しない場合は作成します。詳細については、「接尾辞の作成」 を参照してください。
  2. インポートする LDIF に接尾辞エントリーを追加するステートメントが含まれていない場合は、「ルートエントリーの作成」 で説明されているように、このエントリーを手動で作成します。
  3. インポートタスクを追加します。
    # ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    
    dn: cn=example_import,cn=import,cn=tasks,cn=config
    changetype: add
    objectclass: extensibleObject
    cn: example_import
    nsFilename: /var/lib/dirsrv/slapd-instance_name/ldif/example.ldif
    nsInstance: userRoot
タスクが完了すると、エントリーはディレクトリー設定から削除されます。

6.1.2.2. サーバーがオフライン時のデータのインポート

データのインポート時にサーバーがオフラインの場合は、dsctl ldif2db コマンドを使用します。
  1. 接尾辞が存在しない場合は作成します。詳細については、「接尾辞の作成」 を参照してください。
  2. インポートする LDIF に接尾辞エントリーを追加するステートメントが含まれていない場合は、「ルートエントリーの作成」 で説明されているように、このエントリーを手動で作成します。
  3. インスタンスを停止します。
    # dsctl instance_name stop
  4. LDIF ファイルからデータをインポートします。たとえば、/var/lib/dirsrv/slapd-instance_name/ldif/example.ldif ファイルを userRoot データベースにインポートするには、以下を実行します。
    # dsctl instance_name ldif2db userroot /var/lib/dirsrv/slapd-instance_name/ldif/example.ldif 
    OK group dirsrv exists
    OK user dirsrv exists
    [17/Jul/2018:13:42:42.015554231 +0200] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    ...
    [17/Jul/2018:13:42:44.302630629 +0200] - INFO - import_main_offline - import userroot: Import complete.  Processed 160 entries in 2 seconds. (80.00 entries/sec)
    ldif2db successful
    警告
    コマンドで指定したデータベースが、LDIF ファイルに含まれる接尾辞と一致しない場合は、データベースに含まれるすべてのデータが削除され、インポートに失敗します。
  5. インスタンスを起動します。
    # dsctl instance_name start

6.1.3. Web コンソールを使用したデータのインポート

Web コンソールを使用して LDIF ファイルからデータをインポートするには、以下を行います。
  1. 接尾辞が存在しない場合は作成します。詳細については、「接尾辞の作成」 を参照してください。
  2. インポートする LDIF に接尾辞エントリーを追加するステートメントが含まれていない場合は、「ルートエントリーの作成」 で説明されているように、このエントリーを手動で作成します。
  3. インポートする LDIF ファイルを /var/lib/dirsrv/slapd-instance_name/ldif/ ディレクトリーに保存します。
  4. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  5. インスタンスを選択します。
  6. Database メニューを開きます。
  7. 接尾辞エントリーを選択します。
  8. Suffix Tasks をクリックし、Initialize Suffix を選択します。
  9. インポートする LDIF ファイルを選択するか、ファイルへの完全パスを入力します。
  10. Yes, I am sure を選択し、Initialize Database をクリックして確定します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.