摘要

对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、使用 sed 配合正则删除指定行

sed -i "/^creatorsName: /d"  187_2020-07-05_1593885781.ldif
sed -i "/^createTimestamp: /d"  187_2020-07-05_1593885781.ldif
sed -i "/^modifiersName: /d"  187_2020-07-05_1593885781.ldif
sed -i "/^modifyTimestamp: /d"  187_2020-07-05_1593885781.ldif
sed -i "/^structuralObjectClass: /d"  187_2020-07-05_1593885781.ldif
sed -i "/^entryUUID: /d"  187_2020-07-05_1593885781.ldif
sed -i "/^entryCSN: /d"  187_2020-07-05_1593885781.ldif

2、使用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