V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fuxkcsdn
V2EX  ›  问与答

OpenLDAP突然启动不了,发现是丢失了id2entry.dbb和id2entry.gdbm,如何恢复??

  •  
  •   fuxkcsdn · 2013 年 6 月 15 日 · 4718 次点击
    这是一个创建于 4677 天前的主题,其中的信息可能已经有所发展或是发生改变。
    邮件服务器突然连接不上,看了下发现 slapd 进程占用了99%的CPU,于是想都没想就直接reboot了(已经运行好久没关过机了)
    然后重启后发现客户端无法登陆服务器,一直重复要求输入账号密码,看了下启动过程,发现是ldap没启动成功
    最后查看了下启动脚本,发现是检查配置文件时,缺少了
    /var/lib/ldap/id2entry.dbb
    /var/lib/ldap/id2entry.gdbm
    这2个文件
    /var/lib/ldap/id2entry.bdb文件倒是还在
    没碰到过这问题,不知道有没有办法恢复这2个文件。

    尝试修改启动脚本跳过配置文件检查,但是启动了也没用...依然是无法登录邮件服务器...
    第 1 条附言  ·  2013 年 6 月 15 日
    ...第一次接触openldap...原来不是丢失这2个文件啊...
    这3个文件作用是一样的,只要存在一个就行了

    应该是因为刚在slapd占用99%CPU的时候直接给它重启导致数据丢失了,后来google了下,使用如下方法即可还原数据
    cd /var/lib/ldap
    ls -la
    drwxr-xr-x 2 ldap ldap 4.0K Jun 15 16:40 .
    drwxr-xr-x 4 root root 4.0K Jun 15 16:42 ..
    -rw-r--r-- 1 ldap ldap 4.0K Jun 15 16:40 alock
    -rw------- 1 ldap ldap 24K Jun 15 16:40 cn.bdb
    -rw------- 1 ldap ldap 24K Jun 15 16:40 __db.001
    -rw------- 1 ldap ldap 360K Jun 15 16:40 __db.002
    -rw------- 1 ldap ldap 264K Jun 15 16:40 __db.003
    -rw------- 1 ldap ldap 96K Jun 15 16:40 __db.004
    -rw------- 1 ldap ldap 544K Jun 15 16:40 __db.005
    -rw------- 1 ldap ldap 24K Jun 15 16:40 __db.006
    -rw------- 1 ldap ldap 32K Jun 15 16:40 dn2id.bdb
    -rw------- 1 ldap ldap 128K Jun 15 16:40 id2entry.bdb
    -rw------- 1 ldap ldap 10M Jun 15 16:40 log.0000000001
    -rw------- 1 ldap ldap 60K Jun 15 16:40 mail.bdb
    -rw------- 1 ldap ldap 8.0K Jun 15 16:40 objectClass.bdb
    -rw-r--r-- 1 ldap ldap 37 Jun 15 16:40 openldap-severs-update.log
    -rw------- 1 ldap ldap 24K Jun 15 16:40 uid.bdb

    # 保险起见还是备份一下旧数据,我第一次捣鼓的时候还原了几次都不成功,好在之前有备份
    mkdir -p /home/xxx/ldap_bak
    cp /var/lib/ldap/* /home/xxx/ldap_bak
    # 确保ldap已经停止
    /etc/init.d/ldap stop
    # 早期版本可能是 db_recover
    slapd_db_recover
    ls -al
    drwxr-xr-x 2 ldap ldap 4.0K Jun 15 16:40 .
    drwxr-xr-x 4 root root 4.0K Jun 15 16:42 ..
    -rw-r--r-- 1 ldap ldap 4.0K Jun 15 16:40 alock
    -rw------- 1 ldap ldap 24K Jun 15 16:40 cn.bdb
    -rw------- 1 ldap ldap 32K Jun 15 16:40 dn2id.bdb
    -rw------- 1 ldap ldap 128K Jun 15 16:40 id2entry.bdb
    -rw------- 1 ldap ldap 10M Jun 15 16:42 log.0000000001
    -rw------- 1 ldap ldap 60K Jun 15 16:40 mail.bdb
    -rw------- 1 ldap ldap 8.0K Jun 15 16:40 objectClass.bdb
    -rw-r--r-- 1 ldap ldap 37 Jun 15 16:40 openldap-severs-update.log
    -rw------- 1 ldap ldap 24K Jun 15 16:40 uid.bdb
    /etc/init.d/ldap start

    还原成功...看到有其他人是直接把__db.0*文件都移动到别的地方就还原成功了,我尝试过不行,后来用上面的方法还原成功
    第 2 条附言  ·  2013 年 6 月 15 日
    忘了...运行
    slapd_db_recover
    前要先把DB_CONFIG文件给还原...
    可以通过搜索
    find / -name "*DB_CONFIG*"
    来查找这个配置文件的示例,然后复制一份过来就行了
    所以完整的还原过程应该是


    cd /var/lib/ldap
    mkdir -p /home/xxx/ldap_bak
    cp /var/lib/ldap/* /home/xxx/ldap_bak
    /etc/init.d/ldap stop
    cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    chown -R ldap:ldap /var/lib/ldap/
    slapd_db_recover
    /etc/init.d/ldap start
    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2679 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:58 · PVG 12:58 · LAX 21:58 · JFK 00:58
    ♥ Do have faith in what you're doing.