我试图设置备份和恢复,并确保它的工作。
请注意,ldap.old上的数据库大小比ldap大得多。/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如何验证是否已成功恢复所有记录?
发布于 2013-05-10 09:23:46
首先,您应该知道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文件进行比较。我非常肯定,slapcat的LDIF输出是按区分名称排序的,所以diff应该退出,退出代码为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()的DB中提取与您相关的所有数据,则从它生成一些输出(转储或校验和),并将其与在恢复的数据库上运行相同的代码(当然是在启动ldap之后)进行比较。这样,您就会注意到slapcat是否将一些与您的使用相关的数据排除在转储之外(不太可能,但是如果它有错误的话)。
https://unix.stackexchange.com/questions/75283
复制相似问题