1.2. サーバーのオフライン時にコマンドラインを使ってデータをインポートする
Directory Server インスタンスがオフラインの場合、dsctl ldif2db
コマンドを使用してデータをインポートします。
インポート操作を開始すると、Directory Server はまずデータベースから既存のデータをすべて削除し、その後 LDIF ファイルからデータをインポートします。そのため、インポートに失敗した場合、サーバーはエントリーがないか、エントリーの部分的なセットを返します。
前提条件
-
LDIF ファイルのパーミッションでは、
dirsrv
ユーザーがファイルを読めるようになっている。 - インポートする LDIF ファイルには、ルート接尾辞のエントリーが含まれている。
- データをインポートしたい接尾辞とそのデータベースがディレクトリー内に存在する。
- Directory Server インスタンスが実行していない。
- インポートする LDIF ファイルの文字セットのエンコーディングは UTF-8 である。
手順
オプションです。デフォルトでは、Directory Server は、インポートされたすべてのエントリーのエントリー更新シーケンス番号 (USN) を
0
に設定します。別の初期 USN 値を設定するには、nsslapd-entryusn-import-initval
パラメーターを設定します。例えば、インポートされたすべての値の USN を12345
に設定するには、次のように入力します。#
dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-entryusn-import-initval=12345
インポートするファイルを
/var/lib/dirsrv/slapd-instance_name/ldif/
にコピーした場合には、そのファイルの SELinux コンテキストをリセットします。#
restorecon -Rv /var/lib/dirsrv/slapd-instance_name/ldif/example.ldif
LDIF ファイルからデータをインポートするには、
dsctl ldif2db
コマンドを使用します。たとえば、/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/2021:13:42:42.015554231 +0200] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 ... [17/Jul/2021: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-
バックアップ中の問題について、
/var/log/dirsrv/slapd-instance_name/errors
ログを検索します。 オプション: インスタンスを起動します。
#
dsctl instance_name start
検証
例えば
dc=example,dc=com
のように、インポートされた接尾辞の下にあるエントリーを検索します。#
ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x
関連情報
- 接尾語を別のデータベースに格納する
- nsslapd-entryusn-import-initval
-
データのインポートに使用できるすべての追加設定を表示するには、
dsctl ldif2db --help
コマンドの出力を参照してください。