Red Hat Directory Server のバックアップおよび復元

Red Hat Directory Server 12

Red Hat Directory Server のバックアップおよび復元

Red Hat Customer Content Services

概要

Web コンソールまたはコマンドラインを使用して、Red Hat Directory Server データベース、設定ファイル、およびカスタムスキーマファイルをバックアップします。また、インスタンスがオフラインでもオンラインでもデータベースを復元することができます。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。これを行うには、以下を行います。

  • Jira からのフィードバック送信 (アカウントが必要)

    1. Jira の Web サイトにログインします。
    2. 上部のナビゲーションバーで Create をクリックします。
    3. Summary フィールドにわかりやすいタイトルを入力します。
    4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
    5. ダイアログの下部にある Create をクリックします。
  • Bugzilla からのフィードバック送信 (アカウントが必要)

    1. Bugzilla の Web サイトに移動します。
    2. Component として Documentation を使用します。
    3. Description フィールドに、ドキュメントの改善に向けたご提案を記入してください。ドキュメントの該当部分へのリンクも追加してください。
    4. Submit Bug をクリックします。

第1章 Directory Server のバックアップ

Directory Server のバックアップには、次のファイルが含まれます。

  • データベースのインデックス化された属性が含まれる LDIF ファイル dse_index.ldif
  • インスタンスの設定属性が含まれる LDIF ファイル dse_instance.ldif
  • データベースで定義されたインデックスの .db ファイルが含まれる、各バックエンドのディレクトリー (userRoot など)
  • トランザクションログファイル log.*
  • データベースのバージョンファイル DBVERSION

Directory Server は個別のデータベースのバックアップをサポートしない点に注意してください。

設定などの他の重要なファイルのバックアップに関する詳細は、設定ファイル、証明書データベース、およびカスタムスキーマファイルのバックアップ を参照してください。

バックアップとは対照的に、Directory Server からのデータのエクスポート で説明されているようにデータをエクスポートできます。エクスポート機能を使用して、サブツリーなどの特定のデータをサーバーから LDIF 形式でエクスポートします。

1.1. インスタンスの実行中にコマンドラインを使用した全データベースのバックアップ

実行中の Directory Server インスタンスのデータベースをすべてバックアップするには、dsconf backup create コマンドを使用します。

重要

Directory Server は、データベースをオンラインバックアップから復元する際に変更ログを消去します。したがって、オンラインバックアップを使用する場合は、データベースの復元後にレプリカを再初期化する必要があります。再初期化を回避するには、オフラインバックアップを使用します。

前提条件

  • dirsrv ユーザーに、バックアップ先ディレクトリーの書き込みパーミッションがある。

    Directory Server はデフォルトで独自のプライベートディレクトリーを使用することに注意してください。その結果、PrivateTmp systemd ディレクティブを無効にしない限り、ディレクトリー /var/tmp//tmp/、および /root/ の下のバックアップとエクスポートは失敗します。

  • Directory Server インスタンスが実行している。

手順

  1. すべてのデータベースをバックアップします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backup create
    The backup create task has finished successfully

    デフォルトでは、dsconf は、バックアップを /var/lib/dirsrv/slapd-instance_name/bak/ ディレクトリーの instance_name-YYYY_MM_DD_hh_mm_ss というサブディレクトリーに保存します。別の場所を指定するには、コマンドにディレクトリー名を追加します。

  2. バックアップ中の問題について、/var/log/dirsrv/slapd-instance_name/errors ログを検索します。

関連情報

1.2. インスタンスのオフライン時にコマンドラインを使用した全データベースのバックアップ

Directory Server インスタンスがオフライン時にデータベースのバックアップを作成するには、dsctl db2bak コマンドを使用します。

前提条件

  • dirsrv ユーザーに、バックアップ先ディレクトリーの書き込みパーミッションがある。

    Directory Server はデフォルトで独自のプライベートディレクトリーを使用することに注意してください。その結果、PrivateTmp systemd ディレクティブを無効にしない限り、ディレクトリー /var/tmp//tmp/、および /root/ の下のバックアップとエクスポートは失敗します。

  • Directory Server インスタンスが実行していない。

手順

  1. すべてのデータベースをバックアップします。

    # dsctl instance_name db2bak
    db2bak successful

    デフォルトでは、dsctl db2bak は、バックアップを /var/lib/dirsrv/slapd-instance_name/bak/ ディレクトリーの instance_name-YYYY_MM_DD_hh_mm_ss というサブディレクトリーに保存します。別の場所を指定するには、コマンドにディレクトリー名を追加します。

    必要に応じて、コマンドに -v オプションを指定して詳細な出力を表示します。

    # dsctl -v instance_name db2bak
    ...
    DEBUG: Instance allocated
    DEBUG: systemd status -> True
    ...
    INFO: db2bak successful
  2. バックアップ中の問題について、/var/log/dirsrv/slapd-instance_name/errors ログを検索します。
  3. オプション: インスタンスを起動します。

    # dsctl instance_name start

1.3. Web コンソールを使用して全データベースをバックアップする

Directory Server は、Web コンソールを使用したデータのバックアップをサポートします。

重要

Directory Server は、データベースをオンラインバックアップから復元する際に変更ログを消去します。したがって、オンラインバックアップを使用する場合は、データベースの復元後にレプリカを再初期化する必要があります。再初期化を回避するには、オフラインバックアップを使用します。

前提条件

  • dirsrv ユーザーに、バックアップ先ディレクトリーの書き込みパーミッションがある。

    Directory Server はデフォルトで独自のプライベートディレクトリーを使用することに注意してください。その結果、PrivateTmp systemd ディレクティブを無効にしない限り、/var/tmp//tmp/、および /root/ ディレクトリーでのバックアップとエクスポートは失敗します。

  • Web コンソールでインスタンスにログインしている。

手順

  1. Actions ボタンをクリックして、Manage Backups を選択します。
  2. Create Backup をクリックします。
  3. バックアップの作成日時を示すタイムスタンプなど、バックアップの名前を入力します。
  4. Create Backup をクリックします。
  5. バックアップ中の問題についてログを確認するには、MonitoringLoggingErrors Log メニューを開きます。

サーバーは、バックアップを /var/lib/dirsrv/slapd-instance_name/bak/ ディレクトリー内の指定した名前のサブディレクトリーに保存します。

1.4. 設定ファイル、証明書データベース、およびカスタムスキーマファイルのバックアップ

インスタンスがオンラインでもオフラインでも、データベースをバックアップすると、Directory Server は設定ファイル、証明書データベース、およびカスタムスキーマファイルもバックアップします。dsconf backup create および dsctl db2bak コマンドは、ファイルをバックアップのデフォルトディレクトリーである /var/lib/dirsrv/slapd-instance_name/bak/example_backup/config_files/ にバックアップします。これらのファイルは、ハードウェア障害の後にインスタンスを別のサーバーに復元するために必要になる可能性があります。

重要

バックアップ時に、証明書データベースを更新しないでください。更新してしまうと、バックアップ内のデータベースで一貫性がなくなる可能性があります。

手順

検証

  • バックアップディレクトリーでバックアップされた設定ファイルを見つけます。

    # ls /var/lib/dirsrv/slapd-instance_name/bak/example_backup/config_files/
    注記

    Directory Server は、バックアップされた設定ファイルを自動的に復元しません。これらのファイルは手動で復元する必要があります。

第2章 グループのメンバーが Directory Server をバックアップすることの許可、およびグループメンバーの 1 つとしてのバックアップの実行

グループのメンバーに、インスタンスをバックアップして、そのバックアップを実施するパーミッションを設定できます。バックアップスクリプトまたは cron ジョブに cn=Directory Manager の認証情報を設定する必要がなくなるため、セキュリティーが向上します。また、グループを変更して、バックアップのパーミッションを簡単に許可し、取り消すことができます。

2.1. グループが Directory Server をバックアップすることの許可

この手順を使用して、cn=backup_users,ou=groups,dc=example,dc=com グループを追加し、このグループのメンバーがバックアップタスクを作成するのを許可します。

前提条件

  • エントリー ou=groups,dc=example,dc=com がデータベースに存在する。

手順

  1. cn=backup_users,ou=groups,dc=example,dc=com グループを作成します。

    # dsidm -D "cn=Directory manager" ldap://server.example.com -b "dc=example,dc=com" group create --cn backup_users
  2. cn=backup_users,ou=groups,dc=example,dc=com グループのメンバーによるバックアップタスクの作成を許可するアクセス制御手順 (ACI) を追加します。

    # ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com
    
    dn: cn=config
    changetype: modify
    add: aci
    aci: (target = "ldap:///cn=backup,cn=tasks,cn=config")(targetattr="*")
     (version 3.0 ; acl "permission: Allow backup_users
      group to create backup tasks" ; allow (add, read, search) groupdn
      = "ldap:///cn=backup_users,ou=groups,dc=example,dc=com";)
    -
    add: aci
    aci: (target = "ldap:///cn=config")(targetattr = "nsslapd-bakdir ||
      objectClass") (version 3.0 ; acl "permission: Allow backup_users
      group to access bakdir attribute" ; allow (read,search)
      groupdn = "ldap:///cn=backup_users,ou=groups,dc=example,dc=com";)
  3. ユーザーを作成します。

    1. ユーザーアカウントを作成します。

      # dsidm -D "cn=Directory manager" ldap://server.example.com -b "dc=example,dc=com" user create --uid="example" --cn="example" --uidNumber="1000" --gidNumber="1000" --homeDirectory="/home/example/" --displayName="Example User"
    2. ユーザーアカウントのパスワードを設定します。

      # dsidm -D "cn=Directory manager" ldap://server.example.com -b "dc=example,dc=com" account reset_password "uid=example,ou=People,dc=example,dc=com" "password"
  4. uid=example,ou=People,dc=example,dc=com ユーザーを cn=backup_users,ou=groups,dc=example,dc=com グループに追加します。

    # dsidm -D "cn=Directory manager" ldap://server.example.com -b "dc=example,dc=com" group add_member backup_users uid=example,ou=People,dc=example,dc=com

検証

  • cn=config エントリーに設定された ACI を表示します。

    # ldapsearch -o ldif-wrap=no -LLLx -D "cn=directory manager" -W -H ldap://server.example.com -b cn=config aci=* aci -s base
    dn: cn=config
    aci: (target = "ldap:///cn=backup,cn=tasks,cn=config")(targetattr="*")(version 3.0 ; acl "permission: Allow backup_users group to create backup tasks" ; allow (add, read, search) groupdn = "ldap:///cn=backup_users,ou=groups,dc=example,dc=com";)
    aci: (target = "ldap:///cn=config")(targetattr = "nsslapd-bakdir || objectClass")(version 3.0 ; acl "permission: Allow backup_users group to access bakdir attribute" ; allow (read,search) groupdn = "ldap:///cn=backup_users,ou=groups,dc=example,dc=com";)
    ...

2.2. 通常ユーザーとしてのバックアップの実行

cn=Directory Manager ではなく、通常のユーザーとしてバックアップを実行できます。

前提条件

  • cn=backup_users,ou=groups,dc=example,dc=com グループのメンバーがデータをバックアップするのを許可している。
  • バックアップの実行に使用するユーザーが cn=backup_users,ou=groups,dc=example,dc=com グループのメンバーである。

手順

  • 以下の方法のいずれかを使用してバックアップタスクを作成します。

    • dsconf backup create コマンドの使用:

      # dsconf -D "uid=example,ou=People,dc=example,dc=com" ldap://server.example.com backup create
    • タスクの手動での作成:

      # ldapadd -D "uid=example,ou=People,dc=example,dc=com" -W -H ldap://server.example.com
      
      dn: cn=backup-2021_07_23_12:55_00,cn=backup,cn=tasks,cn=config
      changetype: add
      objectClass: extensibleObject
      nsarchivedir: /var/lib/dirsrv/slapd-instance_name/bak/backup-2021_07_23_12:55_00
      nsdatabasetype: ldbm database
      cn: backup-2021_07_23_12:55_00

検証

  • バックアップが作成されたことを確認します。

    # ls -l /var/lib/dirsrv/slapd-instance_name/bak/
    total 0
    drwx------. 3 dirsrv dirsrv 108 Jul 23 12:55 backup-2021_07_23_12_55_00
    ...

第3章 Directory Server の復元

ハードウェア障害の後などの特定の状況では、Directory Server を復元する必要があります。これは、コマンドラインまたは Web コンソールを使用して実行できます。Directory Server は個別のデータベースの復元をサポートしない点に注意してください。

データベースにカスタムデータを入力する場合は、インポート機能を使用します。サーバーから特定のデータを LDIF 形式でインポートできます。詳細は、Directory Server へのデータのインポート を参照してください。

3.1. インスタンスの実行中にコマンドラインを使用した全データベースの復元

実行中の Directory Server インスタンスにすべてのデータベースを復元するには、dsconf backup restore コマンドを使用します。

前提条件

  • Directory Server のバックアップがある。
  • dirsrv ユーザーに、バックアップディレクトリーの読み取りパーミッションがある。
  • Directory Server インスタンスが実行している。

手順

  1. /var/lib/dirsrv/slapd-instance_name/bak/instance_name-YYYY_MM_DD_hh_mm_ss ディレクトリーに保存されているバックアップから、すべてのデータベースを復元します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backup restore /var/lib/dirsrv/slapd-instance_name/bak/instance_name-YYYY_MM_DD_hh_mm_ss
    The backup restore task has finished successfully
  2. 復元中の問題について、/var/log/dirsrv/slapd-instance_name/errors ログを検索します。

関連情報

3.2. インスタンスのオフライン時コマンドラインを使用した全データベースの復元

インスタンスがオフライン時にすべてのデータベースを復元するには、dsctl bak2db コマンドを使用します。

前提条件

  • Directory Server のバックアップがある。
  • dirsrv ユーザーに、バックアップディレクトリーの読み取りパーミッションがある。
  • Directory Server インスタンスが実行していない。

手順

  1. /var/lib/dirsrv/slapd-instance_name/bak/instance_name-YYYY_MM_DD_hh_mm_ss ディレクトリーに保存されているバックアップから、すべてのデータベースを復元します。

    # dsctl instance_name bak2db /var/lib/dirsrv/slapd-instance_name/bak/instance_name-YYYY_MM_DD_hh_mm_ss/
    bak2db successful

    必要に応じて、コマンドに -v オプションを指定して詳細な出力を表示します。

    # dsctl -v instance_name bak2db /var/lib/dirsrv/slapd-instance_name/bak/instance_name-YYYY_MM_DD_hh_mm_ss/
    ...
    DEBUG: Instance allocated
    DEBUG: OK group dirsrv exists
    DEBUG: OK user dirsrv exists
    DEBUG: systemd status -> True
    ...
    INFO: bak2db successful
  2. 復元中の問題について、/var/log/dirsrv/slapd-instance_name/errors ログを検索します。
  3. オプション: インスタンスを起動します。

    # dsctl instance_name start

3.3. Web コンソールを使用した全データベースの復元

Directory Server は、Web コンソールを使用したデータの復元をサポートします。

前提条件

  • バックアップが、/var/lib/dirsrv/slapd-instance_name/bak/ ディレクトリーに保存されている。
  • dirsrv ユーザーに、バックアップディレクトリーの読み取りパーミッションがある。
  • Web コンソールでインスタンスにログインしている。

手順

  1. Actions メニューをクリックして、Manage Backups を選択します。表示されるウィンドウには、/var/lib/dirsrv/slapd-instance_name/bak/ ディレクトリーで利用可能なバックアップが表示されます。
  2. 復元するバックアップの横にある Actions メニューを開き、Restore Backup を選択します。
  3. Yes をクリックして確定します。
  4. 復元中の問題についてログを確認するには、MonitoringLoggingErrors Log メニューを開きます。

3.4. 複製されたエントリーが含まれるデータベースの復元

サプライヤーサーバーを復元すると、いくつかの状況が発生する可能性があります。

  • コンシューマーサーバーも復元される。

    (データが同期されるように) 全く同じ時間に作成されたバックアップからすべてのデータベースを復元するような非常にまれな状況においては、コンシューマーはサプライヤーと同期が取れた状態のままであるため、特に何もする必要はありません。レプリケーションは中断せずに再開します。

  • サプライヤーだけが復元される。

    サプライヤーのみが復元された場合や、コンシューマーが別のバックアップから復元された場合は、サプライヤーがコンシューマーを再初期化して、データベースのデータを更新します。

  • サプライヤーサーバーで変更ログエントリーの有効期限がまだ切れていない。

    データベースのバックアップの取得後にサプライヤーの変更ログが期限切れになっていない場合は、ローカルコンシューマーを復元し、通常の操作を継続します。この状態は、cn=changelog,cn=database_name,cn=ldbm database,cn=plugins,cn=config エントリーで、変更ログの最大有効期限属性 nsslapd-changelogmaxage に設定された値よりも短い期間内にバックアップを作成した場合に限り発生します。

    Directory Server は、レプリカとその変更ログの間の互換性を自動的に検出します。不一致が検出されると、サーバーは古い変更ログファイルを削除し、空のファイルを新たに作成します。

  • 変更ログエントリーが、ローカルバックアップを作成した後にサプライヤーサーバー上で期限切れになる。

    変更ログエントリーの有効期限が切れている場合は、コンシューマーが再初期化される。

例3.1 Directory Server のレプリケーショントポロジーの復元

2 つのサプライヤーと 2 つのコンシューマーサーバーで設定されるレプリケーション環境のサーバーをすべて復元するには、以下を実行します。

  1. restore または import のいずれかを使用して、最初のサプライヤーを再初期化します。
  2. レプリケーションを使用して残りのサーバーをオンラインに初期化します。

    1. 最初のサプライヤーから 2 番目のサプライヤーを初期化します。
    2. サプライヤーからコンシューマーを初期化します。
  3. 各サーバーでレプリケーションのステータスを表示し、レプリケーションが正しく機能していることを確認します。

復元操作中に、復元されたデータベースに関連する変更ログが削除されます。再初期化が必要であることを示すメッセージが、サプライヤーサーバーのログファイルに記録されます。

3.5. 設定ファイル、証明書データベース、およびカスタムスキーマファイルの復元

設定ファイル、証明書データベース、カスタムスキーマファイルをバックアップから手動で復元できます。

前提条件

  • Directory Server のバックアップがある。
  • dirsrv ユーザーに、/var/lib/dirsrv/slapd-instance_name/bak/ バックアップディレクトリーの読み取りパーミッションがある。
  • Directory Server インスタンスが実行していない。

手順

  1. バックアップディレクトリーから Directory Server 設定ディレクトリーに、復元するファイルをコピーします。たとえば、dse.ldif 設定ファイルを復元するには、次のように入力します。

    # cp /var/lib/dirsrv/slapd-instance_name/bak/example_backup/config_files/dse.ldif /etc/dirsrv/slapd-instance_name/
  2. インスタンスを起動します。

    # dsctl instance_name start

検証

  • サーバーがサーバー設定を復元したことを確認します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com config get

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.