摘要:
對openldap進行備份時,直接使用slapcat命令進行備份,使用ldapadd還原出現問題及解決。
介紹:
對openldap進行備份時,直接使用slapcat命令進行備份(如代碼一),然后使用ldapadd還原會出現以下報錯信息:
ldap_add: Constraint violation (10)
additional info: structuralObjectClass: no user modification allowed
#代碼一: slapcat -v -l ldapbackup.ldif
分析原因:slapcat備份出來的ldapback.ldif中有系統自動生成的系統信息不能導入需要清除
解決方案:清除ldapback.ldif中的系統信息
步驟:
1、新建過濾正則表達式slapcat.regex
cat >slapcat.regex <<EOF /^creatorsName: /d /^createTimestamp: /d /^modifiersName: /d /^modifyTimestamp: /d /^structuralObjectClass: /d /^entryUUID: /d /^entryCSN: /d EOF
2、過濾掉系統信息
cat ldapback.ldif | sed -f slapcat.regex > slapdata.ldif
3、使用ldapadd導入
ldapadd -H ldap://127.0.0.1 -x -D "用戶" -f slapdata.ldif -w 密碼 #或 服務器程序導入 初始使用可能失敗 #slapadd -l slapdate.ldif
備份方案二:
ldapsearch -x -b 'dc=com,dc=cn' > ldapbackup.ldif
其他方案:
[方法1]
關閉:kill -INT `cat /var/run/slapd.pid`
啟動:/usr/sbin/slapd
備份:/usr/sbin/slapcat>mail_ldap.ldif
導入:ldapadd -x -D "cn=Manager,dc=domain,dc=com" -w secret -v -f mail_ldap.ldif
關閉模式導入:
slapadd -l mail_ldap.ldif -f /etc/openldap/sladp.conf
[方法2]
系統突然掉電或重啟引起LDAP數據庫意外關閉造成的。
進入ldap數據目錄(/openldap/var/openldap-data),執行db_recover,再啟動服務.
/var/lib/ldap slapd db_recover
參考:
[1] linewer.Ldap相關問題小結.http://blog.chinaunix.net/uid-10328574-id-2951045.html.2013-10-08
[2] shrekmu.手工備份恢復Openldap數據庫.http://blog.csdn.net/shrekmu/article/details/1266361.2013-10-08
[3] nonnie.OpenLDAP的手工備份與恢復.http://blog.163.com/nonnie@126/blog/static/57630308201091194938915/.2013-10-08