2.2. データベースの作成および維持


ディレクトリーデータを整理するための接尾辞を作成したら、そのディレクトリーのデータを含むデータベースを作成します。
注記
dsconf ユーティリティーまたは Web コンソールを使用して接尾辞を作成すると、Directory Server はデータベースを自動的に作成していました。

2.2.1. データベースの作成

ディレクトリーツリーは、複数の Directory Server データベースに配布できます。複数のデータベースにデータを分散する方法は 2 つあります。
各接尾辞に 1 つのデータベース各接尾辞のデータは個別のデータベースに含まれます。
個別の接尾辞に含まれるデータを格納するために、3 つのデータベースが追加されます。
このツリーユニットの分割は、たとえば次の 3 つのデータベースに対応しています。
この例では、DB1 には ou=people のデータおよび dc=example,dc=com のデータが含まれ、クライアントが dc=example,dc=com に基づいて検索を実行できるようにします。ただし、DB2 には ou=groups のデータのみが含まれ、DB3 には ou=contractors のデータのみが含まれます。
1 つの接尾辞に複数のデータベースがあります。
ディレクトリーツリーの ou=people ブランチ内のエントリー数が非常に大きくなると、2 つのデータベースを格納しなければならないとします。この場合、ou=people に含まれているデータは 2 つのデータベースに分散できます。
DB1 には A-K からの名前の人が含まれ、DB2 には L-Z からの名前が含まれます。DB3 には ou=groups のデータが含まれ、DB4 には ou=contractors のデータが含まれます。
カスタムプラグインは、複数のデータベースにまたがってデータを単一の接尾辞から分散します。Directory Server のディストリビューションロジックの作成方法は、Red Hat コンサルティングにお問い合わせください。

2.2.1.1. コマンドラインを使用した単一の接尾辞用の新規データベースの作成

ldapmodify コマンドラインユーティリティーを使用して、ディレクトリー設定ファイルに新しいデータベースを追加します。データベース設定情報は cn=ldbm database,cn=plugins,cn=config エントリーに保存されます。新しいデータベースを追加するには、以下を実行します。
  1. ldapmodify を実行して、新規データベースのエントリーを作成します。
    # ldapmodify -a -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    
    dn: cn=UserData,cn=ldbm database,cn=plugins,cn=config
    changetype: add
    objectclass: extensibleObject
    objectclass: nsBackendInstance
    nsslapd-suffix: ou=people,dc=example,dc=com
    追加されたエントリーは UserData という名前のデータベースに対応します。このデータベースには root 接尾辞または副接尾辞 ou=people,dc=example,dc=com のデータが含まれます。
  2. 「コマンドラインでルート接尾辞の作成」 および 「コマンドラインを使用した従属接尾辞の作成」 で説明されているように、ルートまたは従属接尾辞を作成します。DN 属性に指定されたデータベース名は、接尾辞エントリーの nsslapd-backend 属性の値に対応している必要があります。

2.2.1.2. 単一の接尾辞に複数のデータベースの追加

1 つの接尾辞は、複数のデータベースに分散できます。ただし、接尾辞を配布するには、ディレクトリーを拡張するためにカスタムディストリビューション機能を作成する必要があります。カスタムディストリビューション機能の作成に関する詳細は、Red Hat コンサルティングにお問い合わせください。
注記
エントリーが分散されたら、再分散できません。以下の制限が適用されます。
  • ディストリビューション機能は、エントリーディストリビューションのデプロイ後は変更できません。
  • エントリーを異なるデータベースに分散させる可能性がある場合は、LDAP modrdn 操作を使用してエントリーの名前を変更することができません。
  • 分散ローカルデータベースは複製できません。
  • エントリーを異なるデータベースに分散させる可能性がある場合は、ldapmodify 操作を使用してエントリーを変更することができません。
これらの制限に違反すると、Directory Server はエントリーを正しく特定して返さないようにします。
カスタムディストリビューションロジックプラグインを作成したら、そのプラグインをディレクトリーに追加します。
ディストリビューションロジックは、接尾辞で宣言された関数です。この関数は、この接尾辞に到達するすべての操作に対して呼び出されます。これには、接尾辞の前に開始するサブツリー検索操作が含まれます。ディストリビューション機能は、Web コンソールとコマンドラインインターフェイスの両方を使用して接尾辞に挿入できます。
カスタムディストリビューション機能を接尾辞に追加するには、以下を指定します。
  1. ldapmodify を実行します。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
  2. 以下の属性を接尾辞エントリー自体に追加し、カスタムディストリビューションロジックに関する情報を提供します。
    dn: suffix
    changetype: modify
    add: nsslapd-backend
    nsslapd-backend: Database1
    -
    add: nsslapd-backend
    nsslapd-backend: Database2
    -
    add: nsslapd-backend
    nsslapd-backend: Database3
    -
    add: nsslapd-distribution-plugin
    nsslapd-distribution-plugin: /full/name/of/a/shared/library
    -
    add: nsslapd-distribution-funct
    nsslapd-distribution-funct: distribution-function-name
    nsslapd-backend 属性は、この接尾辞に関連付けられたすべてのデータベースを指定します。nsslapd-distribution-plugin 属性は、プラグインが使用するライブラリーの名前を指定します。nsslapd-distribution-funct 属性は、ディストリビューション機能自体の名前を提供します。

2.2.2. Directory データベースの維持

2.2.2.1. 読み取り専用モードでのデータベースの設定

データベースが読み取り専用モードの場合は、エントリーを作成、変更、または削除することはできません。読み取り専用モードが役立つ状況の 1 つは、コンシューマーを手動で初期化する場合や、Directory Server からデータをバックアップまたはエクスポートする前です。読み取り専用モードは、特定の時点でのこれらのデータベースの状態の正確なイメージを保証します。
コマンドラインユーティリティーと Web コンソールは、エクスポートまたはバックアップの操作の前に読み取り専用モードでディレクトリーを自動的に配置しません。これは、ディレクトリーの更新で利用できなくなるためです。ただし、マルチサプライヤーレプリケーションでは、これは問題ではない可能性があります。
2.2.2.1.1. コマンドラインを使用した読み取り専用モードでのデータベースの設定
データベースを読み取り専用モードで設定するには、dsconf backend suffix set コマンドを使用します。たとえば、o=test 接尾辞のデータベースを読み取り専用モードで設定するには、以下を実行します。
  1. 接尾辞とそれに対応するバックエンドを表示します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
    dc=example,dc=com (userroot)
    o=test (test_database)
    このコマンドにより、各接尾辞の横にバックエンドデータベースが表示されます。次の手順で、接尾辞のデータベース名が必要です。
  2. データベースを読み取り専用モードで設定します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix set --enable-readonly "test_database"
2.2.2.1.2. Web コンソールを使用した読み取り専用モードでのデータベースの設定
データベースを読み取り専用モードで設定するには、以下を実行します。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Database メニューを開きます。
  4. 接尾辞エントリーを選択します。
  5. Database Read-Only Mode を選択します。
  6. Save Configuration をクリックします。

2.2.2.2. 読み取り専用モードでの Directory Server の配置

Directory Server が複数のデータベースを維持しており、すべてのデータベースを読み取り専用モードで配置する必要がある場合は、1 回の操作で実行できます。
警告
この操作により、Directory Server 設定が読み取り専用になるため、サーバー設定の更新、プラグインの有効化または無効化、読み取り専用モードの場合は Directory Server を再起動することはできません。読み取り専用モードを有効にすると、設定ファイルを手動で変更しない限り、元に戻すことは できません
注記
Directory Server にレプリカが含まれている場合は、レプリケーションを無効にするため、読み取り専用モードを使用 しないでください
2.2.2.2.1. コマンドラインを使用した読み取り専用モードでの Directory Server の配置
Directory Server に対して読み取り専用モードを有効にするには、以下を実行します。
  1. nsslapd-readonly パラメーターを on に設定します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-readonly=on
  2. インスタンスを再起動します。
    # dsctl instance_name restart
2.2.2.2.2. Web コンソールを使用した読み取り専用モードでの Entire Directory Server の配置
Directory Server に対して読み取り専用モードを有効にするには、以下を実行します。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Server Settings メニューを開き、Server Settings エントリーを選択します。
  4. Advanced Settings タブで Server Read-Only を選択します。
  5. Save をクリックします。

2.2.2.3. データベースの削除

接尾辞が不要になった場合は、接尾辞を保存するデータベースを削除できます。
2.2.2.3.1. コマンドラインを使用したデータベースの削除
データベースを削除するには、dsconf backend delete コマンドを使用します。たとえば、o=test 接尾辞のデータベースを削除するには、以下を実行します。
  1. 接尾辞とそれに対応するバックエンドを表示します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
    dc=example,dc=com (userroot)
    o=test (test_database)
    次の手順で、接尾辞の横に表示されるバックエンドデータベースの名前が必要です。
  2. データベースを削除します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend delete "test_database"
2.2.2.3.2. Web コンソールを使用したデータベースの削除
Web コンソールを使用してデータベースを削除するには、以下を行います。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Database メニューを開きます。
  4. 削除する接尾辞を選択し、Suffix Tasks をクリックして Delete Suffix を選択します。
  5. Yes をクリックして確定します。

2.2.2.4. トランザクションログディレクトリーの変更

トランザクションログにより、Directory Server は、インスタンスが予期せずにシャットダウンした後にデータベースを復元できます。特定の状況では、管理者はトランザクションログへのパスを変更したい場合があります。たとえば、Directory Server データベースとは異なる物理ディスクに保存するには、次を実行します。
注記
パフォーマンスを向上させるには、場所を変更する代わりに、トランザクションログが含まれるディレクトリーに高速ディスクをマウントします。詳細は、Red Hat Directory Server パフォーマンスチューニングガイド の該当するセクションを参照してください。
トランザクションログディレクトリーの場所を変更するには、以下を行います。
  1. Directory Server インスタンスを停止します。
    # dsctl instance_name stop
  2. トランザクションログ用に新しい場所を作成します。以下に例を示します。
    # mkdir -p /srv/dirsrv/instance_name/db/
  3. Directory Server のみがディレクトリーにアクセスできるように、パーミッションを設定します。
    # chown dirsrv:dirsrv /srv/dirsrv/instance_name/db/
    # chmod 770 /srv/dirsrv/instance_name/db/
  4. 以前のトランザクションログディレクトリーからすべての __db.* ファイルを削除します。以下に例を示します。
    # rm /var/lib/dirsrv/slapd-instance_name/db/__db.*
  5. 以前のトランザクションログディレクトリーから新しいトランザクションログディレクトリーに、すべての log.* ファイルを移動します。以下に例を示します。
    # mv /var/lib/dirsrv/slapd-instance_name/db/log.* \
         /srv/dirsrv/instance_name/db/
  6. SELinux が enforcing モードで実行している場合は、ディレクトリーに dirsrv_var_lib_t コンテキストを設定します。
    # semanage fcontext -a -t dirsrv_var_lib_t /srv/dirsrv/instance_name/db/
    # restorecon -Rv /srv/dirsrv/instance_name/db/
  7. /etc/dirsrv/slapd-instance_name/dse.ldif ファイルを編集し、cn=config,cn=ldbm database,cn=plugins,cn=config エントリーの nsslapd-db-logdirectory パラメーターを更新します。以下に例を示します。
    dn: cn=config,cn=ldbm database,cn=plugins,cn=config
    ...
    nsslapd-db-logdirectory: /srv/dirsrv/instance_name/db/
  8. インスタンスを起動します。
    # dsctl instance_name start
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.