12.10. スキーマの動的再読み込み

デフォルトでは、Directory Server インスタンスが使用するスキーマファイルが、起動時にディレクトリーに読み込まれます。つまり、サーバーが再起動しない限り、スキーマディレクトリーに追加された新しいスキーマファイルが使用できません。Directory Server には、サーバーの再起動を必要とせずに、カスタムファイルを含む Directory Server インスタンスの完全なスキーマを手動で再読み込みするタスクがあります。
以下の方法の 1 つを使用すると、スキーマを再読み込みできます。
注記
Directory Server は常に、/usr/share/dirsrv/schema/ ディレクトリーに保存されたすべてのスキーマファイルを再読み込みします。

12.10.1. dsconf schema reload コマンドを使用したスキーマの動的再読み込み

dsconf schema reload コマンドを使用してスキーマを再読み込みします。
# dsconf -D "cn=Directory Manager" ldap://server.example.com schema reload
Attempting to add task entry... This will fail if Schema Reload plug-in is not enabled.
Successfully added task entry cn=schema_reload_2018-08-28T09:45:48.027962,cn=schema reload task,cn=tasks,cn=config
To verify that the schema reload operation was successful, please check the error logs
デフォルトでは、Directory Server は、nsslapd-schemadir パラメーターに設定したディレクトリーに保存されているスキーマファイルを再読み込みします。必要に応じて、-d directory オプションをコマンドに指定して、別のディレクトリーに保存されているスキーマを再読み込みします。

12.10.2. cn=tasks エントリーを使用したスキーマの動的再読み込み

Directory Server 設定の cn=tasks,cn=config エントリーは、サーバーがタスクの管理に使用する一時的なエントリー用のコンテナーエントリーです。スキーマ再読み込み操作を開始するには、cn=schema reload task,cn=tasks,cn=config エントリーでタスクを作成します。
デフォルトでは、Directory Server は、nsslapd-schemadir パラメーターに設定したディレクトリーに保存されているスキーマファイルを再読み込みします。たとえば、このパラメーターで設定したディレクトリーに保存されたスキーマファイルを再読み込みするには、次のコマンドを実行します。
# ldapadd -D "cn=Directory Manager" -W -p 389 -h server.example.com -x

dn: cn=example_schema_reload,cn=schema reload task,cn=tasks,cn=config
objectclass: extensibleObject
cn: cn=example_schema_reload
オプションで、schemadir パラメーターを指定して、別のディレクトリーに保存されているスキーマを再読み込みします。以下に例を示します。
# ldapadd -D "cn=Directory Manager" -W -p 389 -h server.example.com -x

dn: cn=example_schema_reload,cn=schema reload task,cn=tasks,cn=config
objectclass: extensibleObject
cn: cn=example_schema_reload
schemadir: /example/schema/
タスクが完了すると、エントリーはディレクトリー設定から削除されます。
cn=schema reload task,cn=tasks,cn=config エントリーの詳細は、『Red Hat Directory Server の設定、コマンド、およびファイルリファレンス』 の cn=schema 再読み込みタスク を参照してください。

12.10.3. レプリケーショントポロジーでのスキーマの再読み込み

スキーマの再読み込みタスクはローカル操作であるため、スキーマが 1 つのサプライヤーに追加され、他のサプライヤーに追加されない場合は、スキーマの変更がマルチサプライヤー環境で複製されません。全サプライヤーサーバーに新しいスキーマファイルを読み込むには、次のコマンドを実行します。
  1. レプリケーションを停止します。「レプリケーションの無効化および再有効化」を参照してください。
  2. 新しいスキーマファイルをコピーし、各サプライヤーおよびレプリカサーバーに対してスキーマ再読み込みタスクを実行します。参照:
  3. レプリケーションを再起動します。「レプリケーションの無効化および再有効化」を参照してください。

12.10.4. スキーマの再読み込みエラー

スキーマ再読み込みタスクが実行しても、サーバーは正常に完了するかどうかを返しません。スキーマ再読み込み操作が正常に行われたことを確認するには、エラーログを確認します。スキーマの再読み込みには、最初にスキーマファイルを検証して読み込む 2 つのタスクがあります。
成功メッセージは、検証が渡され、タスクが完了したことを示しています。
[06/Jan/2009:17:52:04.001214874 -0500] schemareload - Schema reload task starts (schema dir: default) ...
[06/Jan/2009:17:52:04.754335904 -0500] schemareload - Schema validation passed.
[06/Jan/2009:17:52:04.894255328 -0500] schemareload - Schema reload task finished.
失敗したステップがある場合は、失敗したステップおよびその理由がログに表示されます。
[..] schemareload - Schema reload task starts (schema dir: /bogus) ...
[..] schema - No schema files were found in the directory /bogus
[..] schema_reload - schema file validation failed
[..] schemareload - Schema validation failed.