12.10. スキーマの動的再読み込み
デフォルトでは、Directory Server インスタンスが使用するスキーマファイルが、起動時にディレクトリーに読み込まれます。つまり、サーバーが再起動しない限り、スキーマディレクトリーに追加された新しいスキーマファイルが使用できません。Directory Server には、サーバーの再起動を必要とせずに、カスタムファイルを含む Directory Server インスタンスの完全なスキーマを手動で再読み込みするタスクがあります。
以下の方法の 1 つを使用すると、スキーマを再読み込みできます。
- dsconf schema reload コマンド。「dsconf schema reload コマンドを使用したスキーマの動的再読み込み」を参照してください。
- cn=tasks エントリー。「cn=tasks エントリーを使用したスキーマの動的再読み込み」を参照してください。
注記
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 つのサプライヤーに追加され、他のサプライヤーに追加されない場合は、スキーマの変更がマルチサプライヤー環境で複製されません。全サプライヤーサーバーに新しいスキーマファイルを読み込むには、次のコマンドを実行します。
- レプリケーションを停止します。「レプリケーションの無効化および再有効化」を参照してください。
- 新しいスキーマファイルをコピーし、各サプライヤーおよびレプリカサーバーに対してスキーマ再読み込みタスクを実行します。参照:
- レプリケーションを再起動します。「レプリケーションの無効化および再有効化」を参照してください。
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.