6.4. 恢复目录服务器


在某些情况下,管理员希望恢复目录服务器,例如在硬件故障后。本节论述了支持的恢复方法。
注意
目录服务器不支持恢复单个数据库。
目录服务器以 dirsrv 用户身份运行恢复操作。因此,包含备份的目录的权限必须允许此用户读取这些文件。

6.4.1. 使用命令行恢复所有数据库

目录服务器在实例正在运行或实例离线时支持恢复数据库:

6.4.1.1. 恢复所有数据库,但服务器正在运行

使用 dsconf backup restore 命令自动创建从备份目录中恢复所有数据库的任务。
例如,要恢复存储在 /var/lib/dirsrv/slapd-instance_name/bak/instance_name-time_stamp/ 目录中的备份:
# dsconf -D "cn=Directory Manager" ldap://server.example.com backup restore /var/lib/dirsrv/slapd-instance_name/bak/instance_name-time_stamp/
The backup restore task has finished successfully
Copy to Clipboard Toggle word wrap
6.4.1.1.2. 使用 cn=tasks 条目恢复所有数据库
Directory Server 配置中的 cn=tasks,cn=config 条目是服务器用来管理任务的临时条目的容器条目。要启动恢复操作,请在 cn=restore,cn=tasks,cn=config 条目中创建一个任务。
警告
使用恢复任务覆盖实例中的所有数据。
恢复任务条目需要以下属性:
  • cn: 设置任务的唯一名称。
  • nsArchiveDir :设置包含备份的目录的路径。
  • nsDatabaseType :设置要恢复的数据库的类型。目录服务器仅支持此属性中的 ldbm 数据库 值。
例如,添加一个任务,该任务从存储在 /var/lib/dirsrv/slapd-instance_name/bak/instance_name-time_stamp/ 目录中的备份中恢复 所有数据库:
# ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x

dn: cn=example_restore,cn=import,cn=tasks,cn=config
changetype: add
objectclass: extensibleObject
cn: example_restore
nsArchiveDir: /var/lib/dirsrv/slapd-instance_name/bak/instance_name-time_stamp/
nsDatabaseType: ldbm database
Copy to Clipboard Toggle word wrap
任务完成后,该条目会从目录配置中删除。

6.4.1.2. 恢复所有数据库,但服务器为离线

如果在恢复数据库时服务器离线,请使用 dsctl bak2db 命令:
  1. 停止实例:
    # dsctl instance_name stop
    Copy to Clipboard Toggle word wrap
  2. 恢复数据库。例如,添加一个任务,该任务从存储在 /var/lib/dirsrv/slapd-instance_name/bak/instance_name-time_stamp/ 目录中的备份中恢复 所有数据库:
    # dsctl instance_name bak2db /var/lib/dirsrv/slapd-instance_name/bak/instance_name-time_stamp/
    bak2db successful
    Copy to Clipboard Toggle word wrap
    注意
    dsctl bak2db 命令以 dirsrv 用户身份运行。因此,源目录的权限必须允许此用户读取文件和目录。
  3. 启动实例:
    # dsctl instance_name start
    Copy to Clipboard Toggle word wrap

6.4.2. 使用 Web 控制台恢复所有数据库

使用 Web 控制台恢复所有数据库:
  1. 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录目录服务器”
  2. 选择实例。
  3. 单击 Actions 按钮,再选择 Manage Backups
    显示的窗口列出了 /var/lib/dirsrv/slapd-instance_name/bak/ 目录中的可用备份。
  4. 打开您要恢复的备份旁边的 Actions 菜单,然后选择 Restore Backup
  5. 单击 Yes 以确认。

6.4.3. 恢复包含复制条目的数据库

当供应商服务器被恢复时,可能会出现几个情况:
  • 消费者服务器也被恢复。
    对于不太可能的情况,所有数据库都会从完全同时生成的备份中恢复(因此数据处于同步状态),用户仍与供应商同步,不需要执行其他操作。复制可在不中断的情况下恢复。
  • 只恢复供应商。
    如果只恢复供应商,或者消费者从不同时间进行的备份中恢复,请重新初始化供应商的消费者来更新数据库中的数据。如果只恢复供应商,或者消费者从不同时间进行的备份中恢复,请重新初始化供应商的消费者来更新数据库中的数据。
  • changelog 条目还没有在供应商服务器上过期。
    如果在进行数据库备份后,如果供应商的 changelog 尚未过期,则恢复本地消费者并继续正常操作。只有在备份时间超过 cn=changelog5,cn=config 条目中设置的最大 changelog 期限属性 nsslapd-changelogmaxage 时,才会发生这种情况。有关这个选项的更多信息,请参阅 红帽目录服务器配置、命令和文件参考
    目录服务器自动检测副本及其更改日志之间的兼容性。如果检测到不匹配,服务器会删除旧的 changelog 文件,并创建一个新的空信息。
  • 自本地备份时间起,更改日志条目已在供应商服务器上过期。
    如果 changelog 条目已过期,请重新初始化消费者。有关重新初始化用户的详情,请参考 第 15.8.3 节 “初始化消费者”

例 6.3. 恢复目录服务器复制拓扑

例如,要恢复复制环境中由两个供应商和两个消费者服务器组成的所有服务器:
  1. 恢复第一个供应商。使用 dsconf backend import 命令导入数据。请参阅 第 6.1.2 节 “使用命令行导入”
  2. 使用复制在线重新初始化剩余的服务器:
    1. 从第一个供应商初始化第二个供应商。
    2. 从供应商初始化消费者。
  3. 在每个服务器上,显示复制状态以验证复制是否正常工作。详情请查看 第 15.22 节 “显示特定复制协议的状态”
在恢复操作过程中,与恢复数据库关联的更改日志会被清除。消息将记录到供应商服务器的日志文件,表示需要重新初始化。
有关管理复制的详情,请参考 第 15 章 管理复制
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat