OpenLDAP备份恢复

OpenLDAP备份恢复

我正在尝试设置备份和恢复并确保其有效。

请注意,数据库大小ldap.oldldap.这/var/lib/ldap.old是我现有的数据库。我已重命名/var/lib/ldap以进行备份/恢复测试。

恢复时出现以下错误。因此,我不确定我是否已成功恢复一切。

...
added: "uid=user11123,ou=Abcd,ou=Industry Professional,dc=testdomain,dc=org" (0001cc9f)
added: "uid=user13123,ou=Abcd,ou=Industry Professional,dc=testdomain,dc=org" (0001cca0)
Error, entries missing!
  entry 79870: ou=industryprofessional,dc=testdomain,dc=org
  entry 79871: ou=abcd professional,ou=industryprofessional,dc=testdomain,dc=org

磁盘使用情况:

[root@openldap]# du -khs ldap ldap.old/
3.3G    ldap
4.0G    ldap.old/

这是我的备份/恢复过程:

备份:

slapcat -v -l backup_openldap.ldif

恢复:

/etc/init.d/ldap stop
mv /var/lib/ldap /var/lib/ldap.old
mkdir /var/lib/ldap
chmod go-rwx /var/lib/ldap
cp –rfp /var/lib/ldap.old/DB_CONFIG /var/lib/ldap

slapadd –v –l backup_openldap.ldif

chown ldap:ldap /var/lib/ldap
/etc/init.d/ldap start

如何验证我是否已成功恢复所有记录?

答案1

首先你应该了解 slapcat 的局限性:

For some backend types, your slapd(8) should not be running 
(at least, not in read-write mode) when you do this to ensure 
consistency of the database. It is always safe to run slapcat 
with the slapd-bdb(5), slapd-hdb(5), and slapd-null(5) backends. 

所以你最好把它打包备份/etc/init.d/ldap stop/etc/init.d/ldap start以及。

在恢复过程中重新启动之前ldap,您可以将刚刚加载的数据转储到临时文件中,并将其与刚刚用作输入的 LDIF 文件进行比较。我非常确定 LDIF 输出slapcat是按可分辨名称排序的,因此 adiff应该以退出代码 0 退出。

...
chown ldap:ldap *

slapcat -l /var/tmp/test.ldif
diff /var/tmp/test.ldif /backup/openldap/backup_ldap2.diff
if [ $? != 0 ] ; then
     echo 'differences found'
fi

/etc/init.d/ldap start

当然,这假设slapcat工作正常。如果您不相信您应该提取与以下内容相关的所有数据,从正在运行的数据库中ldap_search_ext()生成一些输出(转储或校验和),并将其与在恢复的数据库上运行相同的代码进行比较(ldap当然是在启动之后)。这样,您会注意到与您的使用情况相关的某些数据是否被排除在转储之外slapcat(不太可能,但如果有错误则可能)

相关内容