Мой коллега случайно удалил файлы журнала транзакций ldap (из / var / lib / ldap) на нашем сервере ldap 2.4, работающем на centos. Теперь slapd deamon не запускается, если запустить его с флагом отладки, вот что говорит:
file id2entry.bdb has LSN 754/2932421, past end of log at 1/660
sept. 11 12:40:14 centos7.ent.univ slapd[4917]: bdb(dc=uit,dc=ac,dc=ma): BDB2507 Commonly caused by moving a database from one database environment
sept. 11 12:40:14 centos7.ent.univ slapd[4917]: bdb(dc=uit,dc=ac,dc=ma): BDB2508 to another without clearing the database LSNs, or by removing all of
sept. 11 12:40:14 centos7.ent.univ slapd[4917]: bdb(dc=uit,dc=ac,dc=ma): BDB2509 the log files from a database environment
Я попытался запустить утилиту db_recover, она говорит, что восстановление прошло успешно, но slapd еще не запускается, та же ошибка.
Зная точно, что удаление файлов журнала является виновником, и не имея файлов резервных копий, есть ли способ восстановить базу данных без файлов журнала?
После нескольких часов испытаний произошел сбой, вот что это сделало:
tar -czf ldap.bak.gzip / var / lib / ldap / etc / openldap
db_dump -f файл.dump файл.bdb
rm -f file.bdb
db_load -f file.dump file.bdb
Если вы столкнулись с ошибкой при запуске db_dump, запустите:
db_recover -h / var / lib / ldap
как только вы создали все файлы bdb из файлов дампа, убедитесь, что они принадлежат нужному пользователю:
chown ldap: ldap / var / lib / ldap / *
Попробуйте запустить ldap deamon:
запуск службы slapd
Вы можете попробовать запустить другой db_recover, если он по-прежнему не запускается, но если все файлы bdb были успешно перестроены и имеют необходимые разрешения, демон должен запуститься. На этом этапе сделайте резервную копию всех ваших данных в файл ldif:
slapcat> ldap.bak.ldif
Используя клиент LDAP, попробуйте манипулировать данными (операции добавления, редактирования, удаления), если все в порядке, тогда хорошо для вас, если нет, переустановите сервер LDAP и восстановите данные, используя созданную вами резервную копию ldif.