3.2. 恢复目录服务器
在某些情况下,例如在硬件故障后,您需要恢复目录服务器。您可以使用命令行或 Web 控制台进行此操作。请注意,目录服务器不支持恢复单个数据库。
当您要使用自定义数据填充数据库时,请使用导入功能。您可以使用 LDIF 格式从服务器导入特定数据。详情请参阅 将数据导入到目录服务器。
3.2.1. 在实例运行时,使用命令行恢复所有数据库 复制链接链接已复制到粘贴板!
要恢复正在运行的 Directory Server 实例上的所有数据库,请使用 dsconf backup restore 命令。
先决条件
- 您有一个目录服务器备份。
-
dirsrv用户在备份目录中具有读取权限。 - 目录服务器实例正在运行。
流程
从存储在
/var/lib/dirsrv/slapd- <instance_name> /bak/ <instance_name>-YYYY_MM_DD_hh_mm_ss 目录中的备份中恢复所有数据库:dsconf <instance_name> backup restore /var/lib/dirsrv/slapd-<instance_name>/bak/<instance_name>-YYYY_MM_DD_hh_mm_ss
# dsconf <instance_name> backup restore /var/lib/dirsrv/slapd-<instance_name>/bak/<instance_name>-YYYY_MM_DD_hh_mm_ss The backup restore task has finished successfullyCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在恢复过程中搜索
/var/log/dirsrv/slapd-<instance_name> /errors日志。
3.2.2. 在实例离线时使用命令行恢复所有数据库 复制链接链接已复制到粘贴板!
要在实例离线时恢复所有数据库,请使用 dsctl bak2db 命令。
先决条件
- 您有一个目录服务器备份。
-
dirsrv用户在备份目录中具有读取权限。 - 目录服务器实例没有运行。
流程
从存储在
/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/
# dsctl <instance_name> bak2db /var/lib/dirsrv/slapd-<instance_name>/bak/<instance_name>-YYYY_MM_DD_hh_mm_ss/ bak2db successfulCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)将
-v选项传给命令以显示详细输出:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在恢复过程中搜索
/var/log/dirsrv/slapd-<instance_name> /errors日志。 可选:启动实例:
*dsctl <instance_name> start`
# *dsctl <instance_name> start`Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. 使用 Web 控制台恢复所有数据库 复制链接链接已复制到粘贴板!
目录服务器支持使用 Web 控制台恢复数据。
先决条件
-
备份存储在
/var/lib/dirsrv/slapd- <instance_name>/bak/目录中。 -
dirsrv用户在备份目录中具有读取权限。 - 在 web 控制台中登录到实例。
流程
-
单击
Actions菜单,再选择Manage Backups。显示的窗口列出了/var/lib/dirsrv/slapd- <instance_name> /bak/目录中的可用备份。 -
打开您要恢复的备份旁边的
Actions菜单,然后选择Restore Backup。 - 单击 以确认。
-
要在恢复过程中检查日志是否有问题,请打开
菜单。
3.2.4. 恢复包含复制条目的数据库 复制链接链接已复制到粘贴板!
当供应商服务器被恢复时,可能会出现几个情况:
消费者服务器也被恢复。
对于不太可能的情况,所有数据库都会从完全同时生成的备份中恢复(因此数据处于同步状态),用户仍与供应商同步,不需要执行其他操作。复制可在不中断的情况下恢复。
只恢复供应商。
如果只恢复供应商,或者消费者从不同时间生成的备份中恢复,请重新初始化供应商的消费者以更新数据库中的数据。
changelog 条目还没有在供应商服务器上过期。
如果在进行数据库备份后,如果供应商的 changelog 尚未过期,则恢复本地消费者并继续正常操作。只有在备份时间超过为最大 changelog 年龄属性设置的值(
nsslapd-changelogmaxage)在cn=changelog,cn= <database_name > ,cn=ldbm database,cn=plugins,cn=config条目中设置的值时才会出现这种情况。目录服务器自动检测副本及其更改日志之间的兼容性。如果检测到不匹配,服务器会删除旧的 changelog 文件,并创建一个新的空信息。
自本地备份时间起,更改日志条目已在供应商服务器上过期。
如果 changelog 条目已过期,请重新初始化消费者。
例 3.1. 恢复目录服务器复制拓扑
要恢复复制环境中的所有服务器,由两个供应商和两个消费者服务器组成:
- 使用恢复或导入重新初始化第一个供应商。
使用复制在线重新初始化剩余的服务器:
- 从第一个供应商初始化第二个供应商。
- 从供应商初始化消费者。
- 在每个服务器上,显示复制状态以验证复制是否正常工作。
在恢复操作过程中,与恢复的数据库关联的更改日志将被删除。将向供应商服务器的日志文件中记录一条信息,指示需要重新初始化该重新初始化。
3.2.5. 恢复配置文件、证书数据库和自定义架构文件 复制链接链接已复制到粘贴板!
您可以从备份中手动恢复配置文件、证书数据库和自定义架构文件。
先决条件
- 您有一个目录服务器备份。
-
dirsrv用户在/var/lib/dirsrv/slapd- <instance_name> /bak/backup 目录中具有读取权限。 - 目录服务器实例没有运行。
流程
将您要从备份目录恢复到目录服务器配置目录的文件。例如,要恢复
dse.ldif配置文件,请输入:cp /var/lib/dirsrv/slapd-<instance_name>/bak/<example_backup>/config_files/dse.ldif /etc/dirsrv/slapd-<instance_name>/
# cp /var/lib/dirsrv/slapd-<instance_name>/bak/<example_backup>/config_files/dse.ldif /etc/dirsrv/slapd-<instance_name>/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动实例:
dsctl <instance_name> start
# dsctl <instance_name> startCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证服务器恢复了服务器配置:
dsconf <instance_name> config get
# dsconf <instance_name> config getCopy to Clipboard Copied! Toggle word wrap Toggle overflow