6.3. Directory Server のバックアップ
Directory Server のバックアップには、以下が含まれます。
- これらのデータベース内に格納されているデータを含むすべてのデータベースファイル注記Directory Server は、個別のデータベースのバックアップをサポートしません。
- トランザクションログ
- インデックス
バックアップとは対照的に、「データのエクスポート」 で説明されているように、データをエクスポートできます。エクスポート機能を使用して、LDAP Data Interchange Format (LDIF) 形式のサーバーからサブツリーなどの特定のデータをエクスポートします。
警告
バックアップ操作中にサーバーを停止しないでください。
Directory Server は、バックアップタスクを
dirsrv
ユーザーとして実行します。したがって、移行先ディレクトリーのパーミッションでは、このユーザーがファイルを作成できるようにする必要があります。
6.3.1. コマンドラインを使用した全データベースのバックアップ
Directory Server は、インスタンスの実行中またはオフライン時にデータベースのバックアップをサポートします。
- インスタンスが実行している場合には、以下のいずれかの方法を使用します。
- dsconf backup create コマンドを使用します。「dsconf backup create コマンドを使用した全データベースのバックアップ」を参照してください。
- cn=tasks エントリーを作成します。「cn=tasks エントリーを使用した全データベースのバックアップ」を参照してください。
- インスタンスがオフラインの場合は、dsctl db2bak コマンドを使用します。「サーバーがオフライン時のすべてのデータベースのバックアップ」を参照してください。
重要
これらのメソッドはデータベースのみのバックアップを作成します。設定などの他の重要なファイルのバックアップに関する詳細は、「設定ファイル、証明書データベース、およびカスタムスキーマファイルのバックアップ」を参照してください。
6.3.1.1. サーバーの実行中にすべてのデータベースのバックアップ
6.3.1.1.1. dsconf backup create コマンドを使用した全データベースのバックアップ
dsconf backup create コマンドを使用して、全データベースをバックアップするタスクを自動的に作成します。
重要
データベースがオンラインバックアップから復元されると、Directory Server は changelog をクリーンアップします。したがって、オンラインバックアップを使用する場合は、データベースの復元後にレプリカを再初期化する必要があります。再初期化を回避するには、オフラインバックアップを使用します。
たとえば、すべてのデータベースのバックアップを作成するには、以下を実行します。
# 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-time_stamp
というサブディレクトリーに保存します。別の場所を指定するには、コマンドにディレクトリー名を追加します。
6.3.1.1.2. cn=tasks エントリーを使用した全データベースのバックアップ
Directory Server 設定の cn=tasks,cn=config エントリーは、サーバーがタスクの管理に使用する一時的なエントリー用のコンテナーエントリーです。バックアップ操作を開始するには、cn=backup,cn=tasks,cn=config エントリーでタスクを作成します。
タスクエントリーを使用すると、サーバーの実行中にデータベースのバックアップを作成できます。
バックアップタスクエントリーには以下の属性が必要です。
cn
: タスクの一意の名前を設定します。nsDatabaseType
: バックアップするデータベースのタイプを設定します。Directory Server は、この属性の ldbm database 値のみをサポートします。
バックアップタスクは、デフォルトとして別の宛先ディレクトリーを指定するなど、追加のパラメーターをサポートします (
/var/lib/dirsrv/slapd-instance_name/bak/
)。完全なリストは、『Red Hat Directory Server Configuration, Command, and File Reference』の『cn=backup』セクションを参照してください。
たとえば、すべてのデータベースをバックアップし、アーカイブをデフォルトのバックアップディレクトリーに保存するには、以下を実行します。
# ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x dn: cn=example_backup,cn=export,cn=tasks,cn=config changetype: add objectclass: extensibleObject cn: example_backup nsDatabaseType: ldbm database
nsArchiveDir
属性を指定しないと、サーバーは /var/lib/dirsrv/slapd-instance_name/bak/
ディレクトリーの instance_name-time_stamp
という名前のサブディレクトリーにバックアップを保存します。
タスクが完了すると、エントリーはディレクトリー設定から削除されます。
6.3.1.2. サーバーがオフライン時のすべてのデータベースのバックアップ
データベースのバックアップ時にサーバーがオフラインの場合は、dsctl db2bak コマンドを使用します。
- インスタンスを停止します。
# dsctl instance_name stop
- データベースのバックアップを作成します。
# dsctl instance_name db2bak db2bak successful
注記dsctl db2bak コマンドは、dirsrv
ユーザーとしてバックアップとして実行されます。したがって、インストール先ディレクトリーのパーミッションでは、このユーザーがファイルとディレクトリーを作成できるようにする必要があります。宛先ディレクトリーをコマンドに追加しないと、サーバーは、/var/lib/dirsrv/slapd-instance_name/bak/
ディレクトリーのサブディレクトリーinstance_name-time_stamp
にバックアップを保存します。 - インスタンスを起動します。
# dsctl instance_name start
6.3.2. Web コンソールを使用した全データベースのバックアップ
Web コンソールを使用して、オンラインバックアップを実行できます。
重要
データベースがオンラインバックアップから復元されると、Directory Server は changelog をクリーンアップします。したがって、オンラインバックアップを使用する場合は、データベースの復元後にレプリカを再初期化する必要があります。再初期化を回避するには、オフラインバックアップを使用します。
Web コンソールを使用してインスタンスのデータベースをすべてバックアップするには、以下を実行します。
- Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
- インスタンスを選択します。
- Manage Backup を選択します。ボタンをクリックして、
- バックアップの作成日時を示すタイムスタンプなど、バックアップの名前を入力します。
サーバーは、バックアップを
/var/lib/dirsrv/slapd-instance_name/bak/
ディレクトリー内の指定した名前のサブディレクトリーに保存します。
6.3.3. 設定ファイル、証明書データベース、およびカスタムスキーマファイルのバックアップ
Directory Server に統合されているバックアップメカニズムは、データベースのみのバックアップを作成します。ただし、
/etc/dirsrv/slapd-instance_name/
ディレクトリーには追加のファイルが保存されています。これらのファイルは、たとえば、ハードウェア障害後に別のサーバー上でインスタンスを復元するのに必要になります。
注記
Web コンソールで設定ディレクトリーのバックアップはサポートされていません。
例6.2 /etc/dirsrv/slapd-instance_name/
ディレクトリーのバックアップ方法
/etc/dirsrv/slapd-instance_name/
のコンテンツをバックアップするには、ディレクトリーをコピーするか、アーカイブファイルに保存します。たとえば、/etc/dirsrv/slapd-instance_name/
ディレクトリーのコンテンツを /root/config_slapd-instance_name_time_stamp.tar.gz
ファイルに保存するには、次のコマンドを実行します。
# cd /etc/dirsrv/ # tar -zcvf /root/config_slapd-instance_name_$(date +%Y-%m-%d_%H-%M-%S).tar.gz slapd-instance_name/
重要
バックアップ時に、証明書データベースを更新しないでください。更新してしまうと、バックアップ内のデータベースで一貫性がなくなる可能性があります。
6.3.4. グループのメンバーが Directory Server をバックアップすることの許可、およびグループメンバーの 1 つとしてのバックアップの実行
グループのメンバーに、インスタンスをバックアップしバックアップを実施するパーミッションを設定できます。バックアップスクリプトまたは cron ジョブに
cn=Directory Manager
の認証情報を設定する必要がなくなるため、セキュリティーが向上します。また、グループを変更して、バックアップのパーミッションを簡単に許可し、取り消しすことができます。
6.3.4.1. グループが Directory Server をバックアップすることの許可
この手順を使用して、
cn=backup_users,ou=groups,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 create --cn backup_users
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";)
- ユーザーを作成します。
- ユーザーアカウントを作成します。
# 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"
- ユーザーアカウントのパスワードを設定します。
# 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"
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";) ...
6.3.4.2. 通常のユーザーとしてのバックアップの実行
cn=Directory Manager
ではなく、通常のユーザーとしてバックアップを実行できます。
前提条件
cn=backup_users,ou=groups,dc=example,dc=com
グループのメンバーがデータをバックアップするのを許可している。「グループが Directory Server をバックアップすることの許可」を参照してください。- バックアップの実行に使用するユーザーが
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 ...