восстановить базу данных ldap без файлов журнала

Мой коллега случайно удалил файлы журнала транзакций 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 еще не запускается, та же ошибка.

Точно зная, что удаление файлов журнала является виновником, и не имея файлов резервных копий, есть ли способ восстановить базу данных без файлов журнала?

0
задан 11 September 2019 в 07:05
2 ответа

После нескольких часов пробной версии отказ вот то, что сделало это:

  1. Резервное копирование/var/lib/ldap и tar/etc/openldap

-czf ldap.bak.gzip/var/lib/ldap/etc/openldap

  1. Создают дамп bdb файлов в/var/lib/ldap

db_dump-f file.dump file.bdb

  1. , удаляют bdb файлы, затем создают их снова использующий db_load (запишите все файлы, если Вы удаляете их сразу или делаете это один за другим)

комната-f file.bdb

db_load-f file.dump file.bdb

при столкновении с ошибкой при выполнении db_dump, выполненный:

db_recover-h/var/lib/ldap

, после того как Вы создали все bdb файлы из файлов дампа, удостоверяется, что они принадлежат правильному пользователю:

показанный ldap:ldap/var/lib/ldap /*

Попытка запустить ldap deamon:

сервис slapd запускается

, Вы могли бы попытаться выполнить другой db_recover, если он все еще не запустится, но если бы все bdb файлы были восстановлены успешно и имеют правильные полномочия, то deamon должен запуститься. В этой точке копируют все Ваши данные в ldif файл:

slapcat> ldap.bak.ldif

Используя клиент LDAP, попытайтесь управлять данными (добавьте, отредактируйте, удалите операции), если все в порядке затем хороший для Вас, в противном случае переустановите свой сервер LDAP и восстановите данные с помощью ldif, копируют Вас сделанный.

0
ответ дан 23 November 2019 в 04:37

@Assil, благодаря вам я сэкономил много времени

Мои простые дополнения:

  1. Дамп всех файлов bdb
mkdir /tmp/slapd-dump
cd /var/lib/ldap
find -type f -name "*.bdb" -exec db_dump -f /tmp/slapd-dump/{} {} \
  1. Восстановить из дампа
cd /tmp/slapd-dump
find -type f -name "*.bdb" -exec db_load -f {} /var/lib/ldap/{} \;
cd /var/lib/ldap
  1. Обновить файлы журнала
rm -rf log.*
db_recover
  1. Ручной запуск slapd
sudo -u ldap slapd
  1. Убить slapd

  2. Запустить slapd как службу

Для обычной очистки старых лог-файлов выполните:

db_archive -d -h /var/lib/ldap/
2
ответ дан 14 December 2020 в 16:54

Теги

Похожие вопросы